3

URL を取得するために、HTML 文字列に対して正規表現を実行しています。javascript ではないすべての href と src を取得したい。別の SO 投稿から、次のパターンがあります。

/(href|src)?\="http:\/\/www\.mydomain\.com\/(?:(?!\.js).)*"/

次のような結果が得られます。

src="http://www.mydomain.com/path/to/resource/image.gif" alt="" border="0"

.js結果が欠落しているため、これは良いことです。要素内の追加のタグを取得しているため、悪いです。最初に停止するために、次の修正を試みました"

/(href|src)?\="http:\/\/www\.mydomain\.com\/(?:(?!\.js).)[^"]*"/

href="$url" を返すという点で機能しますが、末尾が.js. 次のような否定的な先読みを組み合わせる方法はありますか?

  • "別の文字列に遭遇するまで文字列を一致させます[^"]*
  • で終わる場合、文字列と一致しない.js"

ヘルプ/ヒント/ポインターをお寄せいただきありがとうございます。

4

4 に答える 4

0

編集

より良い解決策については、https ://stackoverflow.com/a/18838123/1163653 を参照してください。

それを修正しました:

/(href|src)?\="http:\/\/www\.mydomain\.com\/(?:(?!\.js"|").)*"/

.js 先読みは、または を含まない (ドメインの後の) 文字列をチェックしていることに注意してください"。どちらも無効になります。これにより、必要な動作である.css最初の に到達したときにのみ失敗するため、スルーで終わる href が許可され"ます。

于 2013-09-16T22:09:42.267 に答える