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)