javascript - 无法理解 javascript 的正则表达式的工作方式

标签 javascript regex

为什么这段代码(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/

相关文章:

javascript - 如何重复模式并提取 Javascript 正则表达式中的内容

java - 根据不同的单词数量查询不同的正则表达式字符串

javascript - 如何通过正则表达式替换路径中的任意字符串?

javascript - 是否可以只从 Firebase 检索 key 列表?

javascript - yui 子选择器

python - 什么最适合字符串提取或模式匹配 regex/awk/emacs lisp?

javascript - 如何在此电子邮件验证正则表达式中添加对 +(加号)的支持?

javascript - d3 单个节点随着光标移动排斥其他节点

javascript - 正则表达式——不带尾随字符的匹配

php - 删除句子中的所有空格和逗号