我正在做一些邪恶的事情,要求我替换所有出现的“返回xxx;”用其他东西代码片段。
例如
function(x, y)
{
if(x == 0) return "bye bye";
else
return x+y;
}
会成为
function(x,y)
{
if(x == 0) unholy("bye bye");
else
unholy(x+y);
}
寻求帮助因为正则表达式一直在藐视我的理解。
编辑由于“问题与'学习正则表达式'重复'”:
虽然学习新东西总是一个很好的选择,但不一定总是最好的选择。我很想学习缝合伤口,但在流血时最好只是去找医生。当然,如果我一直在自己切割自己,或者我的工作总是让我处于被切割的位置 - 那么我肯定需要学习缝合伤口。此外,有时学习是通过观察某人修理某些东西,并了解他们是如何做到的。
这样做的几种方法之一:
.replace(/return\s+([^;]*);/g, 'unholy($1);');
正则表达式找到任何返回语句和后续空格,然后捕获任何直到;
。用unholy
替换完整的匹配,然后用括号内的先前捕获的部分取而代之。
正则表达式之后的g
代表全局,并使其重复整个文本的替换。
var code = 'function(x, y)\n'+
'{\n'+
' if(x == 0) return "bye bye";\n'+
' else\n'+
' return x+y;\n'+
'}\n';
console.log(code);
code = code.replace(/return\s+([^;]*);/g, 'unholy($1);');
console.log(code);
也许我不明白问题,但为什么你需要正则表达式?这样的事你说够了。
function(x, y) {
function unholy(a, b) {
if (typeof arguments[1] == 'string') {
return "bye bye";
} else return a + b;
}
if (x == 0) unholy("bye bye");
else
unholy(x + y);
}