正则如下:
let regexp = /[a-z]_[a-z]/g;
给定的字符串如下:
a_b_c
执行以下方法:
'a_b_c'.match(/[a-z]_[a-z]/g)
输出:
["a_b"]
问题
- 子串
a_b
和b_c
都匹配正则, 但是结果为什么只输出a_b
? - 怎样修改正则才能输出
a_b
和b_c
呢?
正则如下:
let regexp = /[a-z]_[a-z]/g;
给定的字符串如下:
a_b_c
执行以下方法:
'a_b_c'.match(/[a-z]_[a-z]/g)
输出:
["a_b"]
a_b
和 b_c
都匹配正则, 但是结果为什么只输出 a_b
?a_b
和 b_c
呢?6 回答5.4k 阅读✓ 已解决
9 回答9.6k 阅读
5 回答3.8k 阅读✓ 已解决
4 回答8.1k 阅读✓ 已解决
7 回答10.2k 阅读
5 回答8.4k 阅读
2 回答10.5k 阅读✓ 已解决
这是由于,正则从左到右匹配字符串的时候,是会消耗字符串的,被消耗掉的字符串不可以重复利用,所以你写的表达式只会匹配到第一个。
我上面的写法是利用了正则环视的语法,由于正则环视不消耗环视部分的字符串,所以可以重复利用。
也可以直接用你写的正则,如下: