我正在尝试使用以下正则表达式方式在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
}
}
我试图探索懒惰的正则表达式语法,但无法使其正常工作。我该如何实现?
您可以为全部*
和添加一些惰性量词+
。并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] 删除。
我来说两句