如何知道JavaScript string.replace()是否做了什么?

Ale*_*off 36 javascript regex replace

replace函数返回带有替换的新字符串,但如果没有要替换的单词,则返回原始字符串.除了将结果与原始字符串进行比较之外,有没有办法知道它是否实际上取代了什么?

Kob*_*obi 26

一个简单的选择是在替换之前检查匹配:

var regex = /i/g;
var newStr = str;

var replaced = str.search(regex) >= 0;
if(replaced){
    newStr = newStr.replace(regex, '!');
}
Run Code Online (Sandbox Code Playgroud)

如果你不想要那个,你可以滥用replace回调来实现一次通过:

var replaced = false;
var newStr = str.replace(/i/g, function(token){replaced = true; return '!';});
Run Code Online (Sandbox Code Playgroud)

  • 哇,谢谢回调的想法! (2认同)