当使用/ g(获得多个匹配)和括号(获得反向引用)时,我对正则表达式匹配返回的数组感到困惑.我不清楚如何获得反向引用,因为匹配数组的下标似乎是指多个匹配,而不是后引用.
例如:
string = "@abc @bcd @cde";
re2 = '@([a-z]+)';
p = new RegExp(re2,["g"]);
m = string.match(p)
for (var i in m) { alert(m[i]; }
Run Code Online (Sandbox Code Playgroud)
这是回归,"@abc", "@bcd", "@cde"
但我希望它返回"abc", "bcd", "cde"
我怎么得到后者?
var str = "@abc @bcd @cde",
re = /@([a-z]+)/g,
match;
while (match = re.exec(str)) {
// match[1] contains text matched by first group, match[2] - second, etc.
alert(match[1]);
}
Run Code Online (Sandbox Code Playgroud)