0

私はこの正規表現を使用しています

<a [^>]*href[ ]*=[ ]*\"|'[^>]\"|'[^>]*>

例の文字列で検索するには:

 idhasidhioashdoihas <a onclick=alert('blablabla') href='www.hello.com'
 onclick=alert('blablabla') > asdfsgdufisdugfusdg

一致するはずです

<a onclick=alert('blablabla') href='www.hello.com'onclick=alert('blablabla') >

しかし、それは一致するだけです

'blablabla') href='www.hello.com' onclick=alert('blablabla') >

どこに問題があるのですか?

4

3 に答える 3

0

使用する文字クラスが常に適切であるとは限らず、代替をグループ (つまり: (?:'|")) で囲む必要がありますが、それは必要ありません。同じアイデアでこれを試すことができます:

<a (?:[^h>]+|h(?!ref))*\bhref\s*=\s*["'][^"']*["'][^>]*>

ただし、リンクタグのみを検索したい場合は<a.+?>、thg435 が提案するように使用できます。

(href 値は常に引用符で囲まれているわけではないことに注意してください。

<a (?:[^h>]+|h(?!ref))*\bhref\s*=\s*(?:["'][^"']*["']|[^\s>]*)[^>]*>

(または同じ引用符を持っていることを確認してください)

<a (?:[^h>]+|h(?!ref))*\bhref\s*=\s*(?:(["'])(?:\\\1|[^"']+|(?!\1)["'])*\1|[^\s>]*)[^>]*>
于 2013-07-05T09:14:11.513 に答える