Regular Expression(replace 'BC' but not replace 'ABC')
本帖最后由 benwu1210 于 2013-12-03 20:25:01 编辑
在javascript里 我目前使用Regular Expression
data = data.replace(/BC/g, "SS").replace(/DE/g, "TT")
把全部的「BC」replace成「SS」
且全部的「DE」replace成「TT」
但进一步的想
把全部的「BC」replace成「SS」,但若「BC」前面一个字是「A」则维持不变
且全部的「DE」replace成「TT」,但若「DE」後面一个字是「F」则维持不变
如下
处理前NVBCSPOTABCBSMKBDEVSDEFER
处理後NVSSSPOTABCBSMKBTTVSDEFER
请问该如何处理呢?
------解决方案--------------------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');
这样试试
------解决方案--------------------这个:
var data='NVBCSPOTABCBSMKBDEVSDEFER';
data = data.replace(/(?!A)BC/g, "SS").replace(/DE(?!F)/g, "TT"); //js不支持(?<!A) 零宽度负预测先行断言,不要用
alert(data);