正则中字符串几个重要方法
1.search()返回是正则匹配首字符的索引,没有返回-1
var reg=/\*\d+/g;
var str="zhufeng*2017*peixun";
console.log(str.search(reg));//返回7
2.split(正则) 按照正则匹配的字符进行拆分为数组
var s="https://www.baidu.com/s?tn=baiduhome_pg&rsv_sug3=1&rsv_sug1=1&rsv_sug7=001";
var reg=/\?|&/g;
var ary=s.split(reg),obj={};
ary.shift();
console.log(ary);
for(var i=0;i<ary.length;i++){
var a=ary[i].split(/=/);
obj[a[0]]=a[1];
}
console.log(obj)
//返回
Object {tn: "baiduhome_pg", rsv_sug3: "1", rsv_sug1: "1", rsv_sug7: "001"}
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
replace(),使用正则加上修饰符g,就可以全部替换完
语法:replace(/正则/g,str)将正则匹配的内容替换
var s=" s1 s2 a1 v1 ";
var reg=/\s+/g;
s=s.replace(reg," ");
console.log(s);
//返回 s1 s2 a1 v1
var reg=/^\s+|\s+$/g;
//首尾有空格
s=s.replace(reg,"");
//得出"s1 s2 a1 v1"
语法2:replace(正则,function(){})
第二个参数是一个函数,return返回什么 就向replace传什么
replace中的第二个参数可以传一个函数,替换一次执行一次,每一次执行都会默认给他传参数
第一个参数arguments[0]:大正则匹配的内容
第二个参数arguments[1]:第一个分组匹配的内容
第三个参数arguments[2]:第二个分组匹配的内容倒数第二个参数:就相当于exec返回值中的那个index,就是大正则匹配的内容首字符出现的索引最后一个参数:就相当于exec返回值中那个input,原字符串
return返回什么就替换成什么
⬇️⬇️⬇️实例⬇️⬇️⬇️var str="html2000js14000node6000"; var reg=/([a-z]+)(\d+)/g; str=str.replace(reg,function(){ //console.log(arguments); //html2000 ->学费是:2000; return arguments[1]+"学费是:"+arguments[2]+";" }); console.log(str);
RegExp.$n
表示正则第n个分组的内容
如:$1,$2,$3
var str="a1b2c3";
var reg=/[a-z]+(\b+)[a-z]+(\b+)[a-z]+(\b+)/g
reg.exec(str);