1

Why am I not able to grab the subpattern? The console displays undefined when I am expecting hello to be output. If I change matches[1] to matches[0] I get {{hello}}. So, Why can I not access the subpattern?

var str     = "{{hello}}";
var matches = str.match(/{{(.+)}}/ig);

console.log(matches[1]);
4

2 回答 2

3

尝试:

str.match(/{{(.+)}}/i);

反而。

于 2013-11-08T16:52:15.910 回答
2

看来您正在寻找RegExp.exec. MDN 指出:

如果正则表达式不包含 g 标志,则返回与 regexp.exec(string) 相同的结果。...如果正则表达式包含 g 标志,则该方法返回一个包含所有匹配项的数组。

由于您有g标志,因此 RegExp 试图查找所有全局匹配项(基本上忽略您的分组),返回['{{hello}}'].

如果您删除该g标志(或者使用/{{(.+)}}/i.exec(str),您可以返回您的分组。

于 2013-11-08T16:59:06.247 回答