关乎match、matchAll
更新时间:2023-12-13阅读整篇大约2分钟
g表示全局搜索,如果定义正则表达式时没有g修饰,则只返回首个匹结果,否则返回所有匹配的结果
match
match
返回值是一个数组,如果没有任何匹配项则返回null
js
const str = 'ababdcachuaaiujde';
const pattern = /(\w)b/g;
const pattern2 = /(\w)b/;
console.log(str.match(pattern));//[ 'cb', 'ab' ]
console.log(str.match(pattern2));//[ 'cb', 'c', index: 1, input: 'acbabdcachuaaiujde', groups: undefined ]
对于
match
来说,如果正则表达式中有g修饰,结果返回所有与正则表达式匹配的字符串的列表。捕获项会被忽略!
对于
match
来说,如果正则表达式中没有g修饰,结果除了返回第一个匹配外,还会列出其所有捕获项!
matchAll
matchAll
返回迭代器,要想查看其结果需要遍历迭代器。
js
const str = 'ababdcachuaaiujde';
const pattern = /(\w)b/g;
const pattern2 = /(\w)b/;
console.log([...str.matchAll(pattern)]);//[['cb','c',index: 1,input: 'acbabdcachuaaiujde',groups: undefined],['ab','a',index: 3,input: 'acbabdcachuaaiujde',groups: undefined]]
console.log([...str.matchAll(pattern2)]);//error
对于
matchAll
来说,如果正则表达式有g修饰,其返回的迭代项是一个个的match匹配项
对于
matchAll
来说,如果正则表达式没有g修饰,会报错