正则表达式的方法
RegExp的语法:
var patt=new RegExp(pattern,modifiers);
或更简单的方法
var patt=/pattern/modifiers;
RegExp对象方法:
-
exec:所见字符串中指定的值,饭hi找到的值,并确定其位置
-
let str = 'An apple a day,An apple a day.' let reg = new RegExp('(a)') let reg2 = /(?<first>\w{2})(?<second>\w{3})/ console.log(reg2.exec(str)) console.log(reg2.exec(str)) console.log(reg2.exec(str))
输出结果:
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XcZUFBRm-1596010808074)(D:\MyData\yenm\AppData\Roaming\Typora\typora-user-images\image-20200729155023760.png)]
返回信息分析:
输出的结果为有三个,第一个是匹配到的整个匹配字符,第二三个分别是对应的命名捕获组。
groups:命名捕获组信息,输出的是自定义的捕获组名字以及对应捕获的内容
index: 返回匹配对象的下标位置
input:输入的被匹配的字符串
length: 输出结果的长度
此时没有使用g修饰符,所以连续三次的调用是同一个结果
在使用g后:
let reg2 = /(?<first>\w{2})(?<second>\w{3})/g
返回结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6uypR8H2-1596010808077)(D:\MyData\yenm\AppData\Roaming\Typora\typora-user-images\image-20200729155325064.png)]
返回的结果会在整个字符串进行全局匹配向后匹配
-
test:所见字符串中指定的值,返回true或false
let reg2 = /(?<first>\w{2})(?<second>\w{3})/g console.log(reg2.test(str))
输出结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jo5vyyt6-1596010808078)(D:\MyData\yenm\AppData\Roaming\Typora\typora-user-images\image-20200729155546051.png)]
-
toString:返回正则表达式的字符串
let reg2 = /(?<first>\w{2})(?<second>\w{3})/g
console.log(reg2.toString())
返回结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-elvUqnwx-1596010808081)(D:\MyData\yenm\AppData\Roaming\Typora\typora-user-images\image-20200729155803356.png)]
支持正则表达式的String对象的方法
- search()用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,如果没有找到仍和匹配的子串,则返回-1
let reg2 = /(?<first>\w{2})(?<second>\w{3})/g
console.log(str.search(reg2))
console.log(str.search(reg2))
返回结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xeF0JID2-1596010808084)(D:\MyData\yenm\AppData\Roaming\Typora\typora-user-images\image-20200729160312947.png)]
返回结果是匹配到的子字符串的下标位置,假如匹配不到对应的字符串则返回-1 !!!
- match()可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
语法: array.match(regexp)
let str = 'An apple a day,An apple a day.'
let reg2 = /(?<first>\w{2})(?<second>\w{3})/g
console.log(str.match(reg2))
console.log(str.match(reg2))
console.log(str.match(reg2))
返回结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-976vCNFM-1596010808085)(D:\MyData\yenm\AppData\Roaming\Typora\typora-user-images\image-20200729161317417.png)]
在不进行全局搜索的时候返回的不单单只是个字符串数组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Il27SuAu-1596010808086)(D:\MyData\yenm\AppData\Roaming\Typora\typora-user-images\image-20200729161407780.png)]
- replace():用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
let str = 'An apple a day,An apple a day.'
let reg2 = /(?<first>\w{2})(?<second>\w{3})/g
console.log(str.replace(reg2, 'newWord'))
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EpLe64GI-1596010808087)(D:\MyData\yenm\AppData\Roaming\Typora\typora-user-images\image-20200729161705176.png)]
总结: RegExp的方法和string方法要区分开调用关系,以及对于是不是要全局g修饰符的区别