求一正则表达式,有点难度!(高手请进)

SesameOpen 2006-07-18 05:23:40
字符串如下:
" where ((aa=' wacfaatucaabfd2' or aa like 'aa%' and cc<>' ') or (aa<>'waa2' and bb like 's%')) and aa=0"

希望正则表达式能替换掉单引号外面的aa字符串,而不替换单引号里面包含的aa字符串!

比如aa字符串用Field1替换,得到的字符串是:
" where ((Field1=' wacfaatucaabfd2' or Field1 like 'aa%' and cc<>' ') or (Field1<>'waa2' and bb like 's%')) and Field1=0"

请各位高手指教,谢谢!
...全文
277 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
SesameOpen 2006-07-25
  • 打赏
  • 举报
回复
谢谢各位关注!
meizz 2006-07-25
  • 打赏
  • 举报
回复
你这个问题相当于要做语法分析,要分析出这段字符串是在引号内还是引号外,所以单一句简单的正则表达式搞不定。
SesameOpen 2006-07-25
  • 打赏
  • 举报
回复
没找到我想要的答案,算了,就这样吧!
mingxuan3000 2006-07-19
  • 打赏
  • 举报
回复
mark
meizz 2006-07-19
  • 打赏
  • 举报
回复
火兄弟的代码不错: re=/'[\s\S]+?'/g
SesameOpen 2006-07-19
  • 打赏
  • 举报
回复
多谢 hbhbhbhbhb1021(天外水火(我要多努力)) 大侠,
不过,我希望通过一个正则表达式替换,就得到希望的结果,不想要中间保存单引号字符串的过程。
hbhbhbhbhb1021 2006-07-19
  • 打赏
  • 举报
回复
<script language=javascript>
var str=" where ((aa=' wacfaatucaabfd2' or aa like 'aa%' and cc<>' ') or (aa<>'waa2' and bb like 's%')) and aa=0"
re=/'.+?'/g
var tempArray=str.match(re)
str=str.replace(re,'###');
str=str.replace(/aa/g,'Field')
var i=-1
str=str.replace(/###/g,function(a){i++;return tempArray[i]})
alert(str)
</script>
SesameOpen 2006-07-19
  • 打赏
  • 举报
回复
苦命!
没人理!
SesameOpen 2006-07-19
  • 打赏
  • 举报
回复
meizz(梅花雪)大侠在否?
救命!
SesameOpen 2006-07-19
  • 打赏
  • 举报
回复
谢谢两位!
你们二位的方法的确能实现,究其方法,都是按aa字符串后面的标记符来确定要替换的aa,如果在字符串中包含aa=、aa<、aa>、aa like的字符串,那就不起作用了!
即,字符串改变为下面所示:
" where ((aa=' wacfaa=tucaa bfd2' or aa like 'aa>%' and cc<>' ') or (aa<>'w aa like2' and bb like 's%')) and aa=0"
SesameOpen 2006-07-19
  • 打赏
  • 举报
回复

<

难过!
SesameOpen 2006-07-19
  • 打赏
  • 举报
回复
meizz(梅花雪),难道不能用一个正则表达式实现吗?
lantersen 2006-07-18
  • 打赏
  • 举报
回复
没有直接写出来,如果你急你可能用下这个,我这边测试基本可行:
var reg = /aa=/gi;
var retext = "Field=";
var reg1 = /aa /gi;
var retext1 = "Field ";
var reg2 = /aa</gi;
var retext2 = "Field<";
var reg3 = /aa>/gi;
var retext3 = "Field>";
var str = " where ((aa=' wacfaatucaabfd2' or aa like 'aa%' and cc<>' ') or (aa<>'waa2' and bb like 's%')) and aa=0";
var str1 = str.replace(reg, retext);
var str2 = str1.replace(reg1, retext1);
var str3 = str2.replace(reg2, retext2);
var result = str3.replace(reg3, retext3);
alert(result);
fristfly 2006-07-18
  • 打赏
  • 举报
回复
aa[=|<|>|=| like]
可能有错

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧