js有很多正则方法: test、search、match、replace、exec
,他们之间的区别是什么呢
定义正则:
|
javascript中正则表达式支持的正则表达式有三个, g、i、m
,分别代表全局匹配、忽略大小写、多行模式。三种属性可以自由组合共存。
test
在字符串中查找符合正则的内容,若查找到返回true, 反之返回false.
用法: reg.test(str)
|
search
在字符串搜索符合正则的内容,搜索到就返回出现的位置(从0开始,如果匹配的不只是一个字母,那只会返回第一个字母的位置), 如果搜索失败就返回 -1
用法: str.search(reg)
|
match
在字符串中搜索复合规则的内容,搜索成功就返回内容,格式为数组,失败就返回null。
用法: str.match(reg)
|
replace
查找符合正则的字符串,就替换成对应的字符串。返回替换后的内容。
用法: str.replace(//, 新的字符串/回调函数)
第一个参数也可以是字符串
|
replace()的第二个参数replacement是一个字符串,表示替换的文本,其中可以使用一些特殊字符串。
- $&:匹配的子字符串。
- $` :匹配结果前面的文本。
- $’:匹配结果后面的文本。
- $n:匹配成功的第n组内容,n是从1开始的自然数。这个参数生效的前提是,第一个参数必须是正则* 表达式。
- $$:指代美元符号$。
参考
exec
和match方法一样,搜索符合规则的内容,并返回内容,格式为数组,失败就返回null。
用法: reg.exec(str)
|
replaceAll
es6新增,历史上,字符串的实例方法replace()只能替换第一个匹配。
|
上面例子中,replace()只将第一个b替换成了下划线。
如果要替换所有的匹配,不得不使用正则表达式的g修饰符。
|
正则表达式毕竟不是那么方便和直观,ES2021 引入了replaceAll()方法,可以一次性替换所有匹配。
|
如果searchValue是一个不带有g修饰符的正则表达式,replaceAll()会报错。这一点跟replace()不同。
|
上面代码中,searchValue是搜索模式,可以是一个字符串,也可以是一个全局的正则表达式(带有g修饰符)。
matchAll
- 本文作者: luckyship
- 本文链接: https://luckyship.github.io/2021/02/14/2021-02-14-js-regex-method/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!