日期:2014-05-16  浏览次数:20340 次

分享原生JavaScript技巧大收集(81~90)

文章来源:jquery教程?-?http://www.jq-school.com/Show.aspx?id=312

原生JavaScript技巧大收集(81~90)这篇文章要感谢jquery学堂1群的网友湖北-Script提供了一些实用的代码片段,希望网友们有也可以分享出来。。。
81、原生JavaScript用正则表达式提取页面代码中所有网址

var aa = document.documentElement.outerHTML.match(/(url\(|src=|href=)[\"\']*([^\"\'\(\)\<\>\[\] ]+)[\"\'\)]*|(http:\/\/[\w\-\.]+[^\"\'\(\)\<\>\[\] ]+)/ig).join("\r\n").replace(/^(src=|href=|url\()[\"\']*|[\"\'\>\) ]*$/igm,"");
alert(aa)


82、原生JavaScript用正则表达式清除相同的数组(低效率)

Array.prototype.unique=function(){
	return this.reverse().join(",").match(/([^,]+)(?!.*\1)/ig).reverse();
}


83、原生JavaScript用正则表达式清除相同的数组(高效率)

String.prototype.unique=function(){
	var x=this.split(/[\r\n]+/);
	var y='';
	for(var i=0;i<x.length;i++){
		if(!new RegExp("^"+x[i].replace(/([^\w])/ig,"\\$1")+"$","igm").test(y)){
			y+=x[i]+"\r\n"
		}
	}
	return y
}


84、原生JavaScript用正则表达式按字母排序,对每行进行数组排序

function SetSort(){
	var text=K1.value.split(/[\r\n]/).sort().join("\r\n");//顺序
	var test=K1.value.split(/[\r\n]/).sort().reverse().join("\r\n");//反序
	K1.value=K1.value!=text?text:test;
}


85、原生JavaScript字符串反序

function IsReverse(text){
	return text.split('').reverse().join('');
}


86、原生JavaScript用正则表达式清除html代码中的脚本

function clear_script(){
  K1.value=K1.value.replace(/<script.*?>[\s\S]*?<\/script>|\s+on[a-zA-Z]{3,16}\s?=\s?"[\s\S]*?"|\s+on[a-zA-Z]{3,16}\s?=\s?'[\s\S]*?'|\s+on[a-zA-Z]{3,16}\s?=[^ >]+/ig,"");
}


87、原生JavaScript动态执行JavaScript脚本

function javascript(){
	try{
	  eval(K1.value);
	}catch(e){
		alert(e.message);
	}
}


88、原生JavaScript动态执行VBScript脚本

function vbscript(){
	try{
		var script=document.getElementById("K1").value;
		if(script.trim()=="")return;
		window.execScript('On Error Resume Next \n'+script+'\n If Err.Number<>0 Then \n MsgBox "请输入正确的VBScript脚本!",48,"脚本错误!" \n End If',"vbscript")
	}catch(e){
		alert(e.message);
	}
}


89、原生JavaScript实现金额大写转换函数

function transform(tranvalue) {
  try {
    var i = 1;
    var dw2 = new Array("", "万", "亿"); //大单位
    var dw1 = new Array("拾", "佰", "仟"); //小单位
    var dw = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //整数部分用
    //以下是小写转换成大写显示在合计大写的文本框中     
    //分离整数与小数
    var source = splits(tranvalue);
    var num = source[0];
    var dig = source[1];
    //转换整数部分
    var k1 = 0; //计小单位
    var k2 = 0; //计大单位
    var sum = 0;
    var str = "";
    var len = source[0].length; //整数的长度
    for (i = 1; i <= len; i++) {
      var n = source[0].charAt(len - i); //取得某个位数上的数字
      var bn = 0;
      if (len - i - 1 >= 0) {
        bn = source[0].charAt(len - i - 1); //取得某个位数前一位上的数字
      }
      sum = sum + Number(n);
      if (sum != 0) {
        str = dw[Number(n)].concat(str); //取得该数字对应的大写数字,并插入到str字符串的前面
        if (n == '0') sum = 0;
      }
      if (len - i - 1 >= 0) { //在数字范围内
        if (k1 != 3) { //加小单位
          if (bn != 0) {
            str = dw1[k1].concat(str);
          }
          k1++;
        } else { //不加小单位,加大单位
          k1 = 0;
          var temp = str.charAt(0);
          if (temp == "万" || temp == "亿") //若大单位前没有数字则舍去大单位
          str = str.substr(1, str.length - 1);
          str = dw2[k2].concat(str);
          sum = 0;
        }
      }
      if (k1 == 3) //小单位到千则大单位进一
      {
        k2++;
      }
    }
    //转换小