如何在没有前瞻断言的情况下实现这个正则表达式?

问题描述 投票:0回答:2

我有正则表达式,它使用前瞻断言来匹配格式为 {{ x }} 的字符串。正则表达式是

/(?<=\{\{\s)[^}\s]+(?=\s*\}\})/gm

如何在不使用前瞻断言的情况下实现这一目标?

javascript regex-lookarounds
2个回答
0
投票

试试这个:

\{\{\s([^}\s]+)\s*\}\}

您的结果将在第一个内(

()
内的规则)


0
投票

添加到其他答案中,如果您想要所有“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);

但是问题仍然存在:为什么要避免环顾四周?

© www.soinside.com 2019 - 2024. All rights reserved.