3

使用 JavaScript,我试图替换 html 标记内的属性,并提出了这个正则表达式:

/<\s*tag[^>]*(attr)=['"]{1,1}([^'"\s]*)['"]{1,1}/ig;

这行得通。但是,我希望能够指定查找包含属性值的相同类型的引号。因此,例如,我想指定这是否是表单<tag attr='data'>,在第二个引号中查找单引号,而不是双引号。反之亦然<tag attr="data">;将 SECOND 标记与双引号匹配,而不是单引号。这是为了帮助我保护函数调用免受格式奇特的 HTML 的影响。

那么,我该如何实现呢?

谢谢!

4

2 回答 2

4

试试这个:

/<tag[^>]*attr=(['"])(?:(?!\1)\S)*\1/ig;

解释:

<tag     # Match <tag (\s* is not needed since whitespace is illegal here)
[^>]*    # Match any non-> characters
attr=    # Match "attr="
(['"])   # Match a quote, remember which kind; {1,1} can be dropped (it's a no-op)
(?:      # Try to match
 (?!\1)  #  (unless it's the corresponding closing quote)
 \S      #  any non-whitespace character
)*       # any number of times
\1       # Match the corresponding closing quote
于 2012-09-17T20:02:56.577 回答
1

试试这个:

/<\s*tag[^>]*(attr)=(['"]{1,1})([^'"\s]*)\2{1,1}/ig;
于 2012-09-17T20:03:42.347 回答