正则问题:阿信,这个问题非你莫属
有这样一个sql查询条件"x=5 and a.b=c.b and y>6",我想把其中的关联条件a.b=c.b删掉,而又保持没有多余的"and",但是,关联条件所处的位置可能有以下三种:
1.x=5 and a.b=c.b and y>6
2.x=5 and y>6 and a.b=c.b
3.a.b=c.b and x=5 and y>6s
如果事先知道是哪种情况,删掉的话还好说,但是,条件的位置事先是不知道的,怎么用最少的正则表达式删掉关联条件和多余的“and”。谢谢。
问题点数:20、回复次数:6Top
1 楼xuzuning(唠叨)回复于 2003-09-03 15:01:29 得分 20
<script>
ar = new Array(
"x=5 and a.b=c.b and y>6",
"x=5 and y>6 and a.b=c.b",
"a.b=c.b and x=5 and y>6s"
)
var re = / and a.b=c.b|a.b=c.b and /g;
for(i=0;i<ar.length;i++) {
ar[i] = ar[i].replace(re,"");
document.write((i+1)+"."+ar[i]+"<br>");
}
</script>
Top
2 楼rollrock(现实像一只笼子)回复于 2003-09-03 15:47:15 得分 0
补充一下:关联字段名作为参数可以指定,以删除指定的多表连接。而且sql条件也是未知的,上述的条件只是举个例子Top
3 楼xuzuning(唠叨)回复于 2003-09-03 17:29:59 得分 0
var re = / and a.b=c.b|a.b=c.b and /g;
改作
var s = "a.b=c.b";
var re = eval("/ and "+s+"|"+s+" and /g");Top
4 楼xuzuning(唠叨)回复于 2003-09-03 17:30:23 得分 0
var re = / and a.b=c.b|a.b=c.b and /g;
改作
var s = "a.b=c.b";
var re = eval("/ and "+s+"|"+s+" and /g");Top
5 楼rollrock(现实像一只笼子)回复于 2003-09-03 23:41:54 得分 0
to xuzuning:
有道理,试试先Top
6 楼runmin()回复于 2003-09-04 09:30:20 得分 0
<script>
var tmp = "x=5 and a.b=c.b and y>6".split(" and ");
var newtmp = new Array();
for ( var i=0; i<tmp.length; i++ )
{
if ( tmp[i] != "a.b=c.b" )
{
newtmp[newtmp.length] = tmp[i];
}
}
var result = newtmp.join(" and ");
alert(result);
</script>Top
7 楼runmin()回复于 2003-09-04 09:53:31 得分 0
<script>
var tmp = "x=5 and y>6 and a.b=c.b";
alert(tmp.replace(/a\.b\=c\.b and|and a\.b\=c\.b/,""));
var tmp = "x=5 and a.b=c.b and y>6";
alert(tmp.replace(/a\.b\=c\.b and|and a\.b\=c\.b/,""));
var tmp = "a.b=c.b and x=5 and y>6";
alert(tmp.replace(/a\.b\=c\.b and|and a\.b\=c\.b/,""));
</script>
Top




