竹笋

首页 » 问答 » 问答 » js创建正则的两种方式及正则在字符串方法
TUhjnbcbe - 2023/6/18 20:50:00
白癜风患者能否运动 http://news.39.net/bjzkhbzy/210928/9499919.html

本文介绍,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正则去前后字符
1
查看完整版本: js创建正则的两种方式及正则在字符串方法