'abcabc'.match(/(abc)(abc)/g)
["abcabc"]
'abcabc'.match(/(abc)(abc)/)
["abcabc", "abc", "abc"]
为什么这两个会有完全不同的结果?这个全局g到底在分组里面代表了什么?
'abcabc'.match(/(abc)(abc)/g)
["abcabc"]
'abcabc'.match(/(abc)(abc)/)
["abcabc", "abc", "abc"]
为什么这两个会有完全不同的结果?这个全局g到底在分组里面代表了什么?
g就是全局匹配,但你的例子很难说明问题,我来改一下
先尝试不用全局的
'abcgggabcfffabc'.match(/(abc)/)
结果是 ["abc","abc"]
,我来解释一下结果,
abc
,是正则第一个匹配到的结果,也就是abcgggabcfffabc,因为没有全局匹配,所以只匹配到第一个就结束了,那第二个是什么呢?match
方法的特性,当没有使用全局匹配时,数组的后面将会追加分组的内容
,也就是()
内的内容,也就是你有多少个()
后面就会追加多少个数据元素;当使用全局时
'abcgggabcfffabc'.match(/(abc)/g)
结果是 ["abc", "abc", "abc"]
这个结果其实不用怎么解释 abcgggabcfffabc
大概就是这样子
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
mdn有解释
这就是match的机制。跟g代表的“意思”关系不大,但是有没有g确实影响返回值。