Javascript RegExp查找条件,但不显示条件

Javascript RegExp查找条件,但不显示条件,regex,grouping,conditional-statements,Regex,Grouping,Conditional Statements,我想在括号里找出单词 var str = "asdfasdfkjh {{word1}} asdf fff fffff {{word2}} asdfasdf"; var pattern = /{{\w*}}/g; var str.match(pattern); // ["{{word1}}","{{word2}}"] 这就结束了交易,但给了它括号,我不想要它们。 当然,如果我对结果使用本机替换,我可以删除它们。但我希望regexp也能这样做 我也试过: var模式=/(?:{{)(\w*)(?

我想在括号里找出单词

var str = "asdfasdfkjh {{word1}} asdf fff fffff {{word2}} asdfasdf";
var pattern = /{{\w*}}/g;
var str.match(pattern);  // ["{{word1}}","{{word2}}"]
这就结束了交易,但给了它括号,我不想要它们。 当然,如果我对结果使用本机替换,我可以删除它们。但我希望regexp也能这样做

我也试过: var模式=/(?:{{)(\w*)(?:}})/g

但我找不到真正的交易。你能帮我吗

编辑:我可能需要添加一个注释,说明文字是动态的

解决方案:


基于Tim Piezcker awnser,我提供了以下解决方案:

var arr = [],      
re = /{{(\w?)}}/g,item;

while (item = re.exec(s))
arr.push(item[1]);

一个快速而肮脏的解决方案是
/[^{]+(?=\}})/
,但是如果省略了前面的大括号,它会导致一点混乱,并且还会匹配
{word1}
。如果我没记错的话,JavaScript不支持lookbehind,这在本例中有点遗憾。

在大多数正则表达式风格中,您可以使用lookaround断言:

(?<={{)\w*(?=}})

好主意。我喜欢这个。我猜角落案例
{word1}}
不会有问题,但只有@user1671224能够判断。同意,这没有问题,但可能会导致一些意想不到的困难。这很公平。我可能也会选择捕获组,基于Tim Piezcker-awnser,我提供了以下解决方案:var arr=[],re=/{{(\w?}}}}/g,item;而(项目=重新执行)arr.push(项目[1]);
var pattern = /{{(\w*)}}/g;
var match = pattern.exec(subject);
if (match != null) {
    result = match[1];
}