为什么这段代码(here's the JSBin):
var text = "T: 01202 870738";
var regex1 = /T: (.*)/;
var matches1 = text.match(regex1);
for(var i = 0; i < matches1.length; i++) {
log("[" + i + "]: " + matches1[i]);
}
记录这个:
[0]: T: 01202 870738
[1]: 01202 870738
和这段代码(注意我已经添加了 g
选项):
var regex2 = /T: (.*)/g;
var matches2 = text.match(regex2);
for(var i = 0; i < matches2.length; i++) {
log("[" + i + "]: " + matches2[i]);
}
记录这个:
[0]: T: 01202 870738
我什至不明白为什么第一个代码将 01202 870738
记录为第二个匹配项。如果 /T: (.*)/
不包含 T:
,它如何匹配?
最佳答案
第二个是全局正则表达式,因此返回的数组是字符串中表达式的所有匹配项的列表。第一个不是,所以它是一个组列表,就像您从 exec
中获得的那样。 (第 0 组是整个匹配项,第 1 组是唯一带括号的...组。)
关于javascript - 无法理解 javascript 的正则表达式的工作方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14016974/