正则表达式里面的分组()疑惑?

'abcabc'.match(/(abc)(abc)/g)


["abcabc"]

'abcabc'.match(/(abc)(abc)/)


["abcabc", "abc", "abc"]

为什么这两个会有完全不同的结果?这个全局g到底在分组里面代表了什么?


德玛西亚99
浏览 559回答 2
2回答

人到中年有点甜

g就是全局匹配,但你的例子很难说明问题,我来改一下先尝试不用全局的'abcgggabcfffabc'.match(/(abc)/)结果是 ["abc","abc"],我来解释一下结果,数组的第一个abc,是正则第一个匹配到的结果,也就是abcgggabcfffabc,因为没有全局匹配,所以只匹配到第一个就结束了,那第二个是什么呢?因为match方法的特性,当没有使用全局匹配时,数组的后面将会追加分组的内容,也就是()内的内容,也就是你有多少个()后面就会追加多少个数据元素;当使用全局时'abcgggabcfffabc'.match(/(abc)/g)结果是 ["abc", "abc", "abc"] 这个结果其实不用怎么解释 abcgggabcfffabc大概就是这样子
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript