正则如下:
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
呢?10 回答10.4k 阅读
4 回答8.6k 阅读✓ 已解决
7 回答10.7k 阅读
2 回答11.3k 阅读✓ 已解决
6 回答2.5k 阅读
5 回答4.2k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
这是由于,正则从左到右匹配字符串的时候,是会消耗字符串的,被消耗掉的字符串不可以重复利用,所以你写的表达式只会匹配到第一个。
我上面的写法是利用了正则环视的语法,由于正则环视不消耗环视部分的字符串,所以可以重复利用。
也可以直接用你写的正则,如下: