我有一个字符串
和正则表达式
/{(.+)}/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))