有一个源字符串包含以下一些子字符串:
- “第一的”
- “第二”
有必要相应地更换它们
- “第三”
- “向前”
我这样做是通过以下方式
var output = input;
var re1 = /first/;
var re2 = /second/;
output = output.replace(re1, "third")
output = output.replace(re2, "forth")
问题是如何使用单个正则表达式来做到这一点?
有一个源字符串包含以下一些子字符串:
有必要相应地更换它们
我这样做是通过以下方式
var output = input;
var re1 = /first/;
var re2 = /second/;
output = output.replace(re1, "third")
output = output.replace(re2, "forth")
问题是如何使用单个正则表达式来做到这一点?
您可以使用传递给的函数来做到这一点.replace()
:
output = output.replace(/first|second/g, function(word) {
return word === "first" ? "third" : "fourth";
});
除非您将函数作为第二个参数传递,否则这是不可能的。
var a =function(a){if(a=="first"){ a="third" }else{ a="forth"} return a}
output = output.replace(/first|second/g, a);
那么你也可以只写一个衬里。
output = output.replace(/first/g, "third").replace(/second/g, "forth");
你可能会做这样的事情;使用匿名函数:
var input = "This is the first... no second time that I tell you this!";
var result = input.replace(/first|second/g, function(m) {
switch(m)
{
case "first":
return "third";
case "second":
return "forth";
}
});
该变量m
将包含匹配项,并传递给switch
您可以在需要时添加更多替换的地方。