Regular Expression(replace 'BC' but not replace 'ABC') 本帖最后由 benwu1210 于 2013-12-03 20:25:01 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var a='NVBCSPOTABCBSMKBDEVSDEFER';a=a.replace(/.BC/g,function(x){ if(x.indexOf('A')==0){ return x; }else{ return x.substring(0,1)+'SS'; }}).replace(/DE(?!F)/g,'TT');alert(a=='NVSSSPOTABCBSMKBTTVSDEFER');这样试试 你改成data = data.replace(/(?<!A)BC/g, "SS").replace(/DE(?!F)/g, "TT") 这个:var data='NVBCSPOTABCBSMKBDEVSDEFER';data = data.replace(/(?!A)BC/g, "SS").replace(/DE(?!F)/g, "TT"); //js不支持(?<!A) 零宽度负预测先行断言,不要用alert(data); 我发现我问的不正确,我希望是把全部的「BC」replace成「SS」,但若「BC」前面一个字是「A」则维持不变且若「BC」後面一个字是「D」则维持不变所以我叁考楼上大大的稍做修改,改成data = data.replace(/.BC./g, function (x) { if (x.indexOf("A") == 0) return x; else if (x.indexOf("D") == 3) return x; else return x.substring(0, 1) + "SS" + x.substring(3);});因为还有BC开头的可能性,所以我直接用笨方法去做:if (data.substring(0, 2) == "BC" && data(0, 3) != "BCD") { data = "SS" + data.substring(2);}谢谢大大们的开释 额data.replace(/(?!A)BC(?!D)/g, "SS");我测试了一下,果然,如果BC后面是D就会被排除掉,但是前面是A就没办法了,(?!exp)只是用来判断后面的位置的,js不支持(?<!exp)好吧,暂时想不出了,我去查查 试试这个:var data='NVABCSBCDPOTABCBSMKBDEVSDEFERBC';data = data.replace(/[^A](BC(?!D))/g[1], "SS");alert(data); 纠正一下:var data='NVABCSBCDPOTABCBSMKBDEVSDEFERBC';data = data.replace(/([^A])BC(?!D)/g, "$1SS");alert(data); javascript疑问 alert不执行 [高分高难度求解] jquery 中,如何 reset 复位 toggle 求网页设计作业 我做了一个自定义web控件但是非法 等比例缩放页面及所有控件 得到行号 原生javascript如何检测DOM加载完毕? 正则表达式的全局标志 如何將table設置為一個可滾動的容器? javaScript中想让鼠标离开Div(div中有table)时,让该Div消失,但总是在离开一个cell时消失,该怎么办???急求解决办法!谢谢啦 js 正则表达式验证
a=a.replace(/.BC/g,function(x){
if(x.indexOf('A')==0){
return x;
}else{
return x.substring(0,1)+'SS';
}
}).replace(/DE(?!F)/g,'TT');
alert(a=='NVSSSPOTABCBSMKBTTVSDEFER');
这样试试
var data='NVBCSPOTABCBSMKBDEVSDEFER';
data = data.replace(/(?!A)BC/g, "SS").replace(/DE(?!F)/g, "TT"); //js不支持(?<!A) 零宽度负预测先行断言,不要用
alert(data);
把全部的「BC」replace成「SS」,
但若「BC」前面一个字是「A」则维持不变
且若「BC」後面一个字是「D」则维持不变所以我叁考楼上大大的稍做修改,改成
data = data.replace(/.BC./g, function (x)
{
if (x.indexOf("A") == 0)
return x;
else if (x.indexOf("D") == 3)
return x;
else
return x.substring(0, 1) + "SS" + x.substring(3);
});因为还有BC开头的可能性,所以我直接用笨方法去做:
if (data.substring(0, 2) == "BC" && data(0, 3) != "BCD")
{
data = "SS" + data.substring(2);
}谢谢大大们的开释
额data.replace(/(?!A)BC(?!D)/g, "SS");我测试了一下,果然,如果BC后面是D就会被排除掉,但是前面是A就没办法了,(?!exp)只是用来判断后面的位置的,js不支持(?<!exp)好吧,暂时想不出了,我去查查
data = data.replace(/[^A](BC(?!D))/g[1], "SS");
alert(data);
纠正一下:var data='NVABCSBCDPOTABCBSMKBDEVSDEFERBC';
data = data.replace(/([^A])BC(?!D)/g, "$1SS");
alert(data);