Javascript正则表达式修饰符U



我有一个字符串

和正则表达式

/{(.+)}/g

在PHP正则表达式中,我可以使用修饰符"U"(U修饰符:Ungridy。默认情况下,匹配会变为惰性)。如果我使用/{(.+)}/gU,我的响应如下:

阵列(5)["1"、"2"、"4"、"abc"、"abs"]

在javascript中没有修饰符U。如果没有这个修饰符,我的响应看起来是这样的:

阵列(1)["1 2 4 abc abs"]

我该怎么做?

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

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

另一种方法是将.替换为"除大括号外的任何内容":

"{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))

最新更新