首页 新闻 会员 周边

javascript replace替换正则里面的捕获,怎么办

0
悬赏园豆:15 [已解决问题] 解决于 2013-05-24 09:44

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

少年学编程的主页 少年学编程 | 初学一级 | 园豆:3
提问于:2013-05-23 17:57
< >
分享
最佳答案
0

regStr改成  

/(F1)(?=[+\-*/()\s*]?)$|(F1)(?=[+\-*/()\s*]+)/gi

结果是  "100+F2+F12+F13+(100-F100)*100"

不知道是不是你要的效果

收获园豆:5
TiestoRay | 小虾三级 |园豆:687 | 2013-05-23 18:57

你这个对的。。。零宽度断言吧。。。用(?!可能更简洁一点

少年学编程 | 园豆:3 (初学一级) | 2013-05-24 09:43
其他回答(2)
0

var str="F1+F2+F12+F13+(F1-F100)*F1" ;

alert(str.replace(/F1(?!\d+)/g, "##"));

收获园豆:5
Yu | 园豆:12980 (专家六级) | 2013-05-23 22:00
0
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
收获园豆:5
积跬步 | 园豆:214 (菜鸟二级) | 2013-05-23 23:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册