0

メールアドレスを文字列で照合したい。それは問題ありません。しかし、何らかの理由で、特別な html タグと属性を除外することに失敗しました。

私のメール正規表現:

[!#\$%&'\*\+\-\/0-9=\?a-z\^_`\{\}\|~]*(?:\\[\x00-\x7F][!#\$%&'\*\+\-\/0-9=\?a-z\^_`\{\}\|~]*)*(?:\.[!#\$%&'\*\+\-\/0-9=\?a-z\^_`\{\}\|~]*(?:\\[\x00-\x7F][!#\$%&'\*\+\-\/0-9=\?a-z\^_`\{\}\|~]*)*)*@[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)*\.[a-z]{2,}

今、メールアドレスが入力フィールド内にある場合、一致させたくありません:

<input type="xxx" value"foo@bar.tld">

タイトルタグにある場合は、一致させたくありません

<title>foo@bar.tld

に含まれている場合も<style<script

この先読みを試してみましたが、不正な正規表現を生成するか、機能しません。

4

1 に答える 1

0

1 つの正規表現では、希望どおりに除外と組み込みを同時に行うことはできません。

ターゲット ドキュメントが整形式の XML である場合、1 つ以上の正規表現を使用してタグを検索し、空の文字列に置き換えてから、作業用の正規表現を使用して、残っているテキスト内のメール アドレスを検索できます。

ただし、ターゲットが XML ファイルの場合は、XML パーサーが最適な方法であるという Bohemian の意見に同意する必要があります。XML は複雑で柔軟性があり、空文字列置換の正規表現 (CDATA やコメント ブロックなど) を設計するときに忘れていた機能がファイルに含まれている可能性が常にあります。XML を実行し、ドキュメントを部分ごとに抽出するように設計およびテストされたパーサーを使用するのが最善です。

ターゲット ドキュメントが、XML パーサーが読み取れない手に負えない HTML である場合は、replace-then-search メソッドを試す必要があるかもしれません。

于 2013-03-27T20:28:26.670 に答える