JS replace函数正则表达式细讲:获取url参数与重复字母统计
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);//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