我有正则表达式,它使用前瞻断言来匹配格式为 {{ x }} 的字符串。正则表达式是
/(?<=\{\{\s)[^}\s]+(?=\s*\}\})/gm
如何在不使用前瞻断言的情况下实现这一目标?
试试这个:
\{\{\s([^}\s]+)\s*\}\}
您的结果将在第一个组内(
()
内的规则)
添加到其他答案中,如果您想要所有“x 值”的列表,您可以通过重复评估
m[1]
来生成一个列表,其中 m
是匹配项之一。
以下带和不带环视的变体是等效的:
/* With lookaround */
const s = "{{ 1 }}{{ 2 }}";
console.log(s.match(/(?<=\{\{\s*)[^}\s]+(?=\s*\}\})/gm));
/* Without lookaround */
for (var matches = [], m, regex = /\{\{\s*([^}\s]+)\s*\}\}/gm; m = regex.exec(s);) matches.push(m[1]);
console.log(matches);
但是问题仍然存在:为什么要避免环顾四周?