正则表达式只输入捕获到的第一个结果
正则如下:
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
呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是由于,正则从左到右匹配字符串的时候,是会消耗字符串的,被消耗掉的字符串不可以重复利用,所以你写的表达式只会匹配到第一个。
我上面的写法是利用了正则环视的语法,由于正则环视不消耗环视部分的字符串,所以可以重复利用。
也可以直接用你写的正则,如下:
正则匹配每个字符在匹配结果中只会出现一次