var formulaStr = "F1+F2+F12+F13+(F1-F100)*F1";
var regStr=/(F1)(?:[+\-*/()\s*]?)$|(F1)(?:[+\-*/()\s*]+)/gi;
var ss=formulaStr.replace(regStr,function($0,$1){
return "100";
});
alert(ss);
我现在要将F1替换掉,不替换F11,F12,为什么这个replace不替换只捕获的F1
将regStr改成
/(F1)(?=[+\-*/()\s*]?)$|(F1)(?=[+\-*/()\s*]+)/gi
结果是 "100+F2+F12+F13+(100-F100)*100"
不知道是不是你要的效果
你这个对的。。。零宽度断言吧。。。用(?!可能更简洁一点
var str="F1+F2+F12+F13+(F1-F100)*F1" ;
alert(str.replace(/F1(?!\d+)/g, "##"));
var formulaStr = "F1+F2+F12+F13+(F1-F100)*F1";
var reg = /F1(?!\d)/g;//正向否定查询
formulaStr.replace(reg,100);
http://www.cnblogs.com/mxw09/archive/2010/08/12/1797905.html