如何用正则表达式去除公式中的字符串

纹刀雨辰 2013-12-25 05:09:16
我需要用正则表达式在去除公式中字符串,
比如 abc+"def"+'ghi'+jkl
去除后为 abc+++jkl
我用的是 ["'][\w\s]*["']

但是如果公式中有转义符\"或\'或末尾为\\的情况就会出现错误
比如 abc+"ddd\"eee\'f"+'ghi\\'+jkl
或者遇到不成对的引号,比如abc+'def"+jkl 我需要保留下来,实际却一样会去除

实在搞不定了,还请高人指点啊!

谢谢谢谢了!!!!
下面是我的测试代码,正确的输出应该为
abc+++'jkl"+mno

<html>
<body>
<script type="text/javascript">

var str="abc+\"ddd\\\"eee\\\'fff\\\\\"+'ggg\\\"hhh\\\'iii\\\\'+\'jkl\"+mno"
document.write(str + "<br />")
document.write(str.replace(/["'][\w\s]*["']/g,"") + "<br />")

</script>
</body>
</html>
...全文
186 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
纹刀雨辰 2013-12-25
  • 打赏
  • 举报
回复
参考了rui888和MengYouXuanLv的思路, 我最终写了 str.replace(/(([^\\])\\["'])|(^\\["'])/g,'$2').replace(/"(.*?)"/g,"").replace(/'(.*?)'/g,""), 不对称引号实在实现不了,只好算了, 谢谢两位;
var str="\\\"(10-9)+\"\\\"ddd\\\"e='+\"()ee\\\'fff\\\\\"-'ggg\\\"hhh\\\'iii\\\\'+\'jkl\"+\"jkl\'+\\\"mno";
document.write(str+"<br />")
document.write(str.replace(/(([^\\])\\["'])|(^\\["'])/g,'$2').replace(/"(.*?)"/g,"").replace(/'(.*?)'/g,"")+"<br />")
张运领 2013-12-25
  • 打赏
  • 举报
回复
支持一下版主的说法,正则表达式本来就是为了实现一种规则,或者说规律。 如果规律都不能完全明确,正则真是没法写的
allali 2013-12-25
  • 打赏
  • 举报
回复

var str="abc+\"ddd\\\"eee\\\'fff\\\\\"+'ggg\\\"hhh\\\'iii\\\\'+\'jkl\"+mno";
    alert(str.replace(/\\/g,"").replace(/'[^+]*'/g,"").replace(/"[^+]*"/g,""));
纹刀雨辰 2013-12-25
  • 打赏
  • 举报
回复
("(.*?)") 这个表达式不行啊,还是转义符\"的问题, 引号中有\"时就错了 abc+"d\"ef"+'ghi'+jkl+'sdsd"+"jooio' 转出来是abc+ef"++jkl+'sdsd"+"jooio' 还有能不能一次替换搞定呢?
var t="abc+\"d\\\"ef\"+'ghi'+jkl+'sdsd\"+\"jooio'";
alert(t);
alert(t.replace(/('(.*?)')/,'').replace(/"(.*?)"/,''));
  • 打赏
  • 举报
回复
不成对肯定不行,谁知道你到哪里结束,电脑又不是人,肯定要有规则
tony4geek 2013-12-25
  • 打赏
  • 举报
回复
var t="abc+\"def\"+'ghi'+jkl+'sdsd\"+\"jooio'";
alert(t);
alert(t.replace(/('(.*?)')/,'').replace(/"(.*?)"/,''));

87,997

社区成员

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

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