3

JavaScript を使用して、html タグ内の属性を置き換えようとしており、次の正規表現を思い付きました:

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

これは機能します。ただし、属性値を囲む同じタイプの引用符を検索するように指定できるようにしたいと考えています。したがって、たとえば、これがフォーム<tag attr='data'>であるかどうかを指定し、二重引用符ではなく単一引用符の SECOND 引用符を調べます。逆の場合<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 に答える