JavaScript正则表达式:匹配给定HTML属性中的所有引号

时间:2014-02-12 00:26:23

标签: javascript regex

字符串:

<a href="javascript:void(0)"; onclick="window.location="mailto:"+this.innerHTML.split("").reverse().join("");" style="direction:rtl;unicode-bidi:bidi-override;">link</a>

目标:匹配onclick属性中的所有引号(6):

window.location="mailto:"+this.innerHTML.split("").reverse().join("");

谢谢!

2 个答案:

答案 0 :(得分:2)

如果你只是在寻找能够做到这一点的正则表达式,那么/"/g会不会正常工作?所以,在JavaScript ......

var str = 'window.location="mailto:"+this.innerHTML.split("").reverse().join("");';
// you can get this string from anywhere.

str.match(/"/g);
// returns an array of quotes whose length is equal to the # of quote characters found.

这不会有用,但你还没有说出你想用它做什么。

或者,如果您希望获取引号中的所有内容,请使用正则表达式/"(.*?)"/g

说明:

  • 匹配引号字符
  • 任何角色的懒惰匹配
  • 停在下一个引号字符处。

已经提供了一个捕获组来执行有用的操作。

答案 1 :(得分:0)

假设您正在尝试修复错误,因为有人忘了逃避JS中的引号,请尝试使用此正则表达式:

(onclick=")(.*?)(?<!\\)"(.*?)(?<!\\)"

并替换为

$1$2\\"$3\\"

这将替换未转义的下一组双引号,并根据需要重复。

由于这是无效的HTML ,您尝试使用正则表达式对其进行解析,这可能是您能够更好地替换所述文本的最佳方式。