日期:2014-05-16  浏览次数:20492 次

js正则表达式
各位大侠:
对于一个这样的字符串:str="(DWDM='423' or 2) and (4 or DWDM='423') or 3",我想将其中的数字替换成别的字符串,但是一对单引号''之间的数字不被替换,即第一次将数字 2 替换成a,则变成"(DWDM='423' or a) and (4 or DWDM='423') or 3";第二次替换 3 为 b 则变成 "(DWDM='423' or a) and (4 or DWDM='423') or b",第三次替换 4 为c则变成
"(DWDM='423' or a) and (c or DWDM='423') or 3";
对于这样的需求,在js中的replace函数的参数的正则表达式该如何书写?
急求!!!不甚感激!!!

------解决方案--------------------
我觉得还不如先把 423 换成别地字符,整个的替换完成以后再换回 423 

当然用正则也可以。
------解决方案--------------------
var str="(DWDM='423' or 2) and (4 or DWDM='423') or 3";
str = str.replace(/\d\d\d/g,"四二三");
str = str.replace(/2/,"a");
str = str.replace(/3/,"b");
str = str.replace(/4/,"c");
str = str.replace(/四二三/g,"423");
alert(str);
------解决方案--------------------
一个一个的替换吧。
------解决方案--------------------
JScript code

var str="(DWDM='423' or 2) and (4 or DWDM='423') or 3";
var arr = ["a","b","c","d"];
str = str.replace(/[^'\d]\d+[^'\d]?/g,function($1){
   return $1.replace(/\d/g,function($1){return arr[parseInt($1) - 1]});
});
alert(str);

------解决方案--------------------
function aa(){ 
var sp = "(DWDM='423' or a) and (c or DWDM='423') or 3";
sp = sp.replace(/[2]/g, 'a');
alert(sp);
sp = sp.replace(/[3]/g, 'b');
alert(sp);
sp = sp.replace(/[4]/g, 'c');
alert(sp);
}

这个是js里的。你写个按钮调用下就是
------解决方案--------------------
探讨

您好!关于那个正则表达式的问题,我的完整需求是这样的:首先 js获取页面的一个用户输入的逻辑表达式,比如 ((1 | 2) & (2 | 3)) & 5 这样的表达式,然后从页面的input输入框中取值,形成一个数组,数组中的值类似 DWDM='423' 、RKSJ>'234'等;然后对这个数组循环,依次用数组i项内容替换逻辑表达式(上面的 ((1 | 2) & (2 |……