Javascript 正则表达式修饰符 U

Javascript regular expressions modifier U

我有一个字符串

“{1} {2} {4} {abc} {abs}”

和正则表达式

/\{(.+)\}/g

在PHP正则表达式中我可以使用修饰符“U”(U修饰符:不贪婪。默认情况下匹配变得惰性).如果我使用 /\{(.+)\}/gU,我的回复如下所示:

数组(5)["1","2","4","abc","abs"]

在 javascript 中没有修饰符 U。如果没有这个修饰符,我的回复如下所示:

数组(1)["1 2 4 abc abs"]

我该怎么做?

一种方法是通过添加 ? 修饰符使 + 不贪心:

"{1} {2} {4} {abc} {abs}".match(/\{(.+?)\}/g)

另一种方法是将 . 替换为 "anything except closing brace":

"{1} {2} {4} {abc} {abs}".match(/\{([^}]+)\}/g)

您可以删除所有 { 并分解每个 } 的字符串。是这样的:

var str = "{1} {2} {4} {abc} {abs}";
var result = str.replace(/{|}$/g,"").split(/} ?/);
document.write(result);

尝试 RegExp /([a-z]+|\d+)(?=\})/ig 匹配 a-z 不区分大小写或数字字符后跟 }

"{1} {2} {4} {abc} {abs}".match(/([a-z]+|\d+)(?=\})/ig)

console.log("{1} {2} {4} {abc} {abs}".match(/([a-z]+|\d+)(?=\})/ig))