2

次の文字列があります。

<img alt="over 40 world famous brandedWATCHES BRANDs to choose from
" src="http://www.fastblings.com/images/logo.jpg"></strong></a><br>

のような正規表現パターンを定義したいの<img alt="(.+?)" src="http://(.+?).(jpg|gif)">ですが、ご覧のとおり、ターゲット文字列の alt 属性に改行があります。これをどのように組み込むことができますか? ルールは、「改行を含む alt 属性のすべて」のようにする必要があります。

4

1 に答える 1

4

デフォルトでは、.ワイルドカード演算子は改行文字 ( , )と一致しませ。他の言語では、何にでも一致させるためのモード (単一行モードと呼ばれることもあります) があります。Javascriptには、何らかの理由でそれがありません。同等の use が必要な場合、つまり、任意の文字が空白であるか、空白ではないことを意味します。\n\rDOTALL.[\s\S]

/<img alt="([\s\S]+?)" src="http:\/\/(.+?)\.(jpg|gif)">/

Javascript 正規表現の複数行フラグが機能しないを参照してください。

.また、前にエスケープしましたjpg|gif。そうしないと、意図したものではなく、任意の文字に一致.します。

そうは言っても、正規表現を使用して HTML を解析することは本当に悪い考えです。さらに、質問に関連する詳細が欠落していない限り、jQuery 属性セレクターを使用してこれを簡単に行うことができます。

$("img[src='http://.*\.gif|jpg']").each(function() {
  var alt = $(this).attr("alt");
  var src = $(this).attr("src");
  ...
});

または、属性が必要な場合alt:

$("img[alt][src='http://.*\.gif|jpg']").each(function() {
  var alt = $(this).attr("alt");
  var src = $(this).attr("src");
  ...
});
于 2010-04-07T23:57:50.790 に答える