正则对象的global,判断正则是否使用了全局正则。(使用全局即返回true否则false)
为什么我的代码里的if既不是ture也不是false
String.prototype.replaces=function(reg,str){
var arr = [];
var newStr= this;
var i= '';
while(reg.exec(newStr)!='null') {
try{
arr = newStr.split(reg.exec(newStr)[0]);
newStr = arr.join(str);
if(!reg.global){
alert(1)
return newStr;
}else{
alert(0)
}
}catch(e){
return newStr;
}
}
}
var str = "我是cat,CAT";
var d =str.replaces(/cat/gi,'99');
console.log(d)
代码是仿写原生`String.replace()`方法。
当全局正则匹配(/g)到一个以上的替换字符串时("cat"),都正常。
当全局正则匹配到只有一个时,`var str = "我是cat,CA";` ,上面代码if判断哪个都不执行,当正则 `/cat/i` 没有全局匹配时,结果也正确。请问这个怎么回事,怎么修改。
弑天下
相关分类