js对replace函数的正则表达式深层次运用!
Author:zhoulujun@live.cn 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);
console.log(c2);
//VM2740:4 i'm left
//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);
console.log(c2);
//VM2745:6 i'm i'm left.
//VM2745:7 i'm .right.
再来看…………
比如:我要统计字符串重复出现字母的个数?
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) } }
貌似好复杂样子!……
简单点:……
正则表达式??怎么搞??T……
第二:与上面的循环对比?性能那个号?
……
转载本站文章《js对replace函数的正则表达式深层次运用!》,
请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/js/2016_0323_7726.html