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/