所以说我有一个字符串:
'aaggbb'
我想找到 aXXXb 类型的所有组,其中 X 是任何字符。
我认为正则表达式:
/(a(?:...)b)/ig
可以解决这个问题,但它只得到第一个:
'aaggbb'
并错过了第二个:
'aaggbb'
我如何同时获得两者?
我四处寻找了一段时间试图弄清楚这一点,所以我希望我没有错过一些非常明显的东西。谢谢!
如果您正在寻找固定长度的子字符串,那么您需要使用限制量词来指定它{3}
(精确匹配 3 个符号)并在前瞻中使用捕获来匹配所有子字符串:
(?=(a.{3}b))
See demo https://regex101.com/r/yB8rW4/1
前瞻不消耗字符,并且将启用重叠匹配。 “消费”的意思是在前向或后向的右括号之后,正则表达式引擎停留在字符串中开始查找的同一位置:它没有移动。从该位置开始,引擎可以再次开始匹配字符。 (from reexegg.com http://www.rexegg.com/regex-disambiguation.html)
var re = /(?=(a.{3}b))/g;
var str = 'aaggbb';
while ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
document.getElementById("demo").innerHTML += m[1] + "<br/>";
}
<div id="demo" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)