Javascript RegEx惰性匹配

实际的

我正在尝试使用以下正则表达式方式在JavaScript代码中查找循环模式,并替换语法(从:到in),

var str="for(var x in []) for(var y in [])";

str.replace( new RegExp( '(for\\s*\\(.+\\s+):(\\s+.+\\))', 'ig' ), "\$1in\$2" )

for(var x : list)
{
 // something
}

for(var x in list)
{
 // something
}

但是,当同一行中有多个for循环时,我会遇到问题。

for(var x : list) { for(var y : list) {
     // something
 }
}

这是有效的语法,但是由于贪婪的正则表达式方法,其转换如下:

for(var x : list) { for(var y in list) {
         // something
 }
}

我试图探索懒惰的正则表达式语法,但无法使其正常工作。我该如何实现?

妮娜·斯科茨(Nina Scholz)

您可以为全部*添加一些惰性量词+for由于匹配作为替换的一部分。

var str = "for(var x : []) for(var y : [])";

console.log(str.replace(/for\s*?(\(.+?\s+?):(\s+?.+?\))/ig, "for $1in$2"));

短一点,它包括for在第一组中。

var str = "for(var x : []) for(var y : [])";

console.log(str.replace(/(for\s*?\(.+?):(.+?\))/ig, "$1in$2"));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章