我需要 Javascript 中正则表达式的帮助。我正在寻找一种替换子字符串的方法~::~
仅当它在引号内时。这是我的案例:
源字符串:
"aa\"aa\"aa"~::~ "bbb~::~bbb" "ccc" ~::~
^^^^
sub string to remove
所需的字符串:"aa\"aa\"aa"~::~ "bbbbbb" "ccc" ~::~
示例代码:
var str =' "aa\"aa\"aa"~::~ "bbb~::~bbb" "ccc" ~::~ ';
var re = /(").*?\1/g; <-- *just found that it's wrong, as it doesn't support escaped quotes (VK)*
str.replace(re,'');
问题是我的表达式不支持转义引号。
非常感谢您的帮助。
--Vadim
您可以在正则表达式上使用替换,如下所示:
~::~(?=(?:[^"]*"[^"]*")*[^"]*"[^"]*$)
这可能有点难以理解,但它基本上确保了~::~
您要替换的后面有奇数个引号。
JSFiddle 演示 http://jsfiddle.net/Kx5jP/.
好吧,对于转义引号,情况有点复杂,因为正则表达式也必须“吃掉”转义引号。你可以试试这个:
~::~(?=(?:(?:[^\\"]|\\"|\\\\)*"(?:[^\\"]|\\"|\\\\)*")*(?:[^\\"]|\\"|\\\\)*"(?:[^\\"]|\\"|\\\\)*$)
都是漂亮的照片!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)