下边的代码执行之后得不到我预期的结果:
var aa = ',1,2,3,1,2,2,2,4,';
_val='2';
var re=eval('/,'+_val+',/gi');
alert(aa.replace(re,","));预期的结果是:
,1,3,1,4,而实际执行的结果是:
,1,3,1,2,4,请问怎么改?
var aa = ',1,2,3,1,2,2,2,4,';
_val='2';
var re=eval('/,'+_val+',/gi');
alert(aa.replace(re,","));预期的结果是:
,1,3,1,4,而实际执行的结果是:
,1,3,1,2,4,请问怎么改?
_newval=_oldval.replace(re,",").replace(re,",").replace(re,",");
_val='2';
var re=eval('/,'+_val+'/gi');aa = aa.replace(re,"")
alert(aa);
试试
alert(aa.replace(re,","));
你的re输出为:“/,2,/gi”
这样肯定会多出一个2的,因为第3个“2”前面没了“,”,所以不会replace掉。
只会匹配一个“ ,2,” 留下一个“2”,
所以替换结果为,1,3,1,2,4,,没错
eval('/,'+_val+'(?=,)/gi') 试过没有
var aa = ',1,2,3,1,2,2,2,22,202,4,';
_val='2';
re=eval('/,'+_val+'(?=,)/gi');alert(aa.replace(re,''));
var re=eval('/\b'+_val+'\b/gi');
alert(aa.replace(re,""));
var aa = ',1,2,3,1,2,2,2,4,';
而 var re=eval('/,'+_val+',/gi'); alert(re)是/,2,/gi
字符串中的匹配点有,1,2,3,1,2,2,2,4,
你把红色部分换为,号就是 ,1,3,1,2,4,
得到的这个 ,1,3,1,2,4, 中的,2,的","号是替换出来的,所以正则不会去再匹配!!!!