本文介绍,js创建正则表达式的两种方式,及正则在字符串方法search,match,split,replace中的应用,带综合案例。
一、创建正则表达式的两种方式
1.newRegExp(,gim)
第一个参数为正则表达式,为字符串,在用到的时候需要转义\第二个参数为修饰符可为gim
/*newRegExp(,gim)*g表示全局搜索*i表示忽略大小写*m表示换行**/
varstr=xiaogou;
varreg=newRegExp(\\d[a-z],ig);
console.log(str.match(reg));
//打印[4x]
console.log(reg.exec(str));
//结果:
[4x,index:2,input:xiaogou,groups:undefined]
2.第二种方式varreg=/XXX/ig;
varreg=/\d[a-z]/ig;
console.log(str.match(reg));
//打印[4x]
console.log(reg.exec(str));
//结果:
[4x,index:2,input:xiaogou,groups:undefined]
二、正则对象的方法
两种方式创建正则表达式返回的都是一个正则对象如reg
reg.exec(str)exec:用来检索字符串中的是否有匹配值,有的话则返回一个数组,如果正则中用了分组匹配,则数组中第一个值为字符串本身,第二个为第一个分组,第三个为第二个分组结果等等。没有匹配到,则返回null。reg.test(str)test:用来检索指定值,返回值为true和false
三、正则在字符串方法search,match,replace,split上的使用。
1.search:匹配是否有匹配值,返回字符串中的第一个与正则表达式想匹配的子字符串的起始位置,没有找到返回-1。
varreg=/s/ig;
varstr=xiaogou;
console.log(str.search(reg));
//打印-1
2.match:找到一个或多个正则表达式的匹配值,找到则返回一个数组。
varreg=/s/ig;
varstr=xiaogou;
console.log(str.match(reg));
//打印null
3.replace:替换与正则表达式匹配的值。
varreg=/xiao/ig;
varstr=xiaogou;
console.log(str.replace(reg,***));
//打印***gou
//再如,用replace实现交换数字和字母的位置。
varreg=/(\d+)([a-z]+)/ig;
varstr=xiaogou;
console.log(str.replace(reg,$2$1));
//打印xiaogou
replace实现交换数字和字母的位置4.split:把字符串分割成数组
varreg=/o/ig;
varstr=xiaogou
console.log(str.split(reg));
//打印[xia,g,u]
综合示例:
上面的问题升级,用正则表达式如何将varstr=iam,xiao,gou?;
分割成数组[i,am,,xiao,gou]。
注意前后标点符号,关键就是来解决这个问题。
varstr=iam,xiao,gou?
varreg=/^(\W+)\b(.*)\b(\W+)$/ig;
varstr=iam,xiao,gou?
varres=reg.exec(str);
console.log(res);
//结果:
[iam,xiao,gou?,,iam,xiao,gou,?,index:0,input:iam,xiao,gou?,groups:undefined]
//正则reg中使用了三个分组,结果res[2]为第二个分组(.*)结果,离我们的目标最近,我们拿到res[2]继续用split处理
res[2].split(/[\W]+/g)
//结果:[i,am,,xiao,gou]
最后哪怕是varstr=/?.,iam,xiao,gou?+^都一样可以处理:
依我看前端_js正则去前后字符