Javascript 正则表达式返回 # 字符,即使它没有被捕获

标签 javascript regex

text = 'ticket number #1234 and #8976 ';
r = /#(\d+)/g;

var match = r.exec(text);

log(match); // ["#1234", "1234"]

在上述情况下,我想捕获 1234 和 8976。我该怎么做。此外,该句子可以有任意数量的“#”后跟整数。因此,假设最多出现两次,解决方案不应硬编码。

更新: 只是好奇 。查看以下两个案例。

var match = r.exec(text); // ["#1234", "1234"]

var match = text.match(r);  //["#1234", "#8976"]

为什么在第二种情况下我得到了#,即使我没有捕获它。看起来 string.match 不遵守捕获规则。

最佳答案

exec 多次以获取其余部分。

while((match = r.exec(text)))
  log(match);

关于Javascript 正则表达式返回 # 字符,即使它没有被捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2283708/

相关文章:

javascript - 要求 sequilize 模块在某些快速应用程序文件中返回未定义

javascript - 如何从 JSON 对象中提取多个主题标签?

javascript - 是否可以为图表js添加带文本的条形点

javascript - 下载带有 http header 的文件

regex - Perl如何将正则表达式传递给我的子例程,如grep

从 anchor 标签中提取 anchor 文本、URL 和目标的 javascript 正则表达式

javascript - 以任何顺序匹配查询中所有单词的正则表达式

javascript - 使用正则表达式搜索元素的节点列表

javascript - JQuery 触发器不适用于生成的元素

java - 从字符串中获取方程