Javascript正则表达式修饰符U.

时间:2016-04-17 18:50:06

标签: javascript regex non-greedy

我有一个字符串

" {1} {2} {4} {abc} {abs}"

和正则表达式

/\{(.+)\}/g

在PHP正则表达式中,我可以使用修饰符" U " ( U修饰符:Ungreedy。默认情况下匹配变得懒惰)。如果我使用/\{(.+)\}/gU,我的回答如下:

数组(5)[" 1"," 2"," 4"," abc",&#34 ; ABS" ]

在javascript中没有修饰符U.如果没有此修饰符,我的响应将如下所示:

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

我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

一种方法是通过添加+修饰符来使?无效:

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

另一种方法是将.替换为“除了右括号之外的任何东西”:

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

答案 1 :(得分:0)

您可以删除所有{并按}分解字符串。像这样的东西:



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




答案 2 :(得分:0)

尝试使用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))