【发布时间】:2013-01-29 13:24:00
【问题描述】:
我正在尝试使用带有 javascript 的正则表达式从字符串中获取 所有可能的匹配。看来我这样做的方法与已经匹配的部分字符串不匹配。
变量:
var string = 'A1B1Y:A1B2Y:A1B3Y:A1B4Z:A1B5Y:A1B6Y:A1B7Y:A1B8Z:A1B9Y:A1B10Y:A1B11Y';
var reg = /A[0-9]+B[0-9]+Y:A[0-9]+B[0-9]+Y/g;
代码:
var match = string.match(reg);
我得到的所有匹配结果:
A1B1Y:A1B2Y
A1B5Y:A1B6Y
A1B9Y:A1B10Y
我想要的匹配结果:
A1B1Y:A1B2Y
A1B2Y:A1B3Y
A1B5Y:A1B6Y
A1B6Y:A1B7Y
A1B9Y:A1B10Y
A1B10Y:A1B11Y
在我的脑海中,我希望 A1B1Y:A1B2Y 与 A1B2Y:A1B3Y 匹配,即使字符串中的 A1B2Y 需要成为两个匹配项的一部分。
【问题讨论】:
-
前瞻会得到你想要的匹配,但不幸的是它不会返回前瞻的部分。我还没有找到一种用 javascript 捕获前瞻的方法。也许有,不知道。您的前瞻正则表达式将是: var reg = /A[0-9]+B[0-9]+Y(?=:A[0-9]+B[0-9]+Y)/g;
-
@Mantriur:看我的回答...
-
也许
string.split(":")然后循环遍历数组可能会给你一个更好的结果。 -
@nhahtdh 使用 match() 进行了尝试,但当然前瞻是单独的捕获。呸!美丽的答案。 :-)
标签: javascript regex string match