JS replace函数正则表达式细讲:获取url参数与重复字母统计
Author:[email protected] Date:
js,replace,一般人都知道!!
var test1="wo shi choulujun".replace("ch","zh"); console.log(test1);
这个谁都会呀?
但是这个呢?
b="a b c d".replace(/\w/g,function(){ console.log(arguments) return arguments[0].toUpperCase(); }); console.log(b); /*一般人我可以告诉他! VM55092:3 ["a", 0, "a b c d"] VM55092:3 ["b", 2, "a b c d"] VM55092:3 ["c", 4, "a b c d"] VM55092:3 ["d", 6, "a b c d"] VM55092:6 A B C D*/
于是又了,
var a="a b c d"; var i=0; var b= a.replace(/\s/g,function(item,index,string){ return i++; }); console.log(b);
js replace里面function 函数参数分别是:当前正则匹配对象,函数苏在位置,当前替换对象!
就只有这点料??
目黑呀?
先回顾下:
字符 | 替换文本 |
---|---|
$1、$2、...、$99 | 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。 |
$& | 与 regexp 相匹配的子串。 |
$` (注:反引号 | 位于匹配子串左侧的文本。 |
$' | 位于匹配子串右侧的文本。 |
$$ | 直接量符号。 |
var a1="i'm zhoulujun"; var b1=a1.replace(/zhoulujun/,"{$&}"); console.log(b1);// i'm {zhoulujun} var c1= a1.replace(/zhoulujun/,"$' left"); var c2= a1.replace(/zhoulujun/,"$` right"); console.log(c1);//VM2740:4 i'm left console.log(c2);//VM2740:5 i'm i'm right var a1="i'm zhoulujun."; var c1= a1.replace(/zhoulujun/,"$`left"); var c2= a1.replace(/zhoulujun/,"$'right"); console.log(c1);//VM2745:6 i'm i'm left. console.log(c2);//VM2745:7 i'm .right.
再来看…………
获取URL参数
function getQueryObject(url) { var obj = {}; url||(url=window.location.search) url.replace(/([^?&=]+)=([^?&=]*)/g, function ($0, $1, $2) { console.log($0,$1,$2) obj[decodeURIComponent($1)] = String(decodeURIComponent($2)); }); return obj; }
我要统计字符串重复出现字母的个数?
var re="zhoulujun"; function countRepeat(str){ if(!str||typeof str!="string"){ return false; } var arr=str.split(""); var tem={},max= 1,maxR; for(var i=0;i<arr.length;i++){ if(!tem[arr[i]]){ tem[arr[i]]=1; }else { tem[arr[i]]++; if(tem[arr[i]]>max){ max++; maxR=arr[i]; } } } return { maxNum:max, maxItem:maxR, maxFirstIndex:str.indexOf(maxR) } }
正则表达式实现
var str="sssfgtdfssddfsssfssss"; var num=0; var value=null; function max(){ var new_str=str.split("").sort().join(""); var re=/(\w)\1+/g; //没有\1,re就是一整个排好序的字符串,有了\1就是出现过的有重复的取出来,\1表示跟前面第一个子项是相同的 new_str.replace(re,function($0,$1){ //$0代表取出来重复的一个个整体,如[s,s...],[f,f..],[d,d....] $1代表这个整体里的字符 if(num<$0.length){ num=$0.length; value=$1 } }); alert(value+":"+num) }; max(str);
转载本站文章《JS replace函数正则表达式细讲:获取url参数与重复字母统计》,
请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/js/2016_0323_7726.html