ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript Regex が「m」フラグを含む複数行テキストの抽出に失敗するのはなぜですか?

JavaScript Regex が「m」フラグを含む複数行テキストの抽出に失敗するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-10 01:36:021004ブラウズ

Why Does JavaScript Regex Fail to Extract Multiline Text with the 'm' Flag?

正規表現のジレンマ: 複数行テキストの抽出

開発者は、JavaScript 正規表現を使用して HTML からテキストを抽出しようとして、予期しない障害に遭遇しました。複数行フラグ (m) は、複数行テキストのキャプチャには効果がないようです。

提供された正規表現パターンは、h1 タグで囲まれたテキストを抽出することを目的としていました:

var pattern = /<div>

ただし、HTML 文字列に改行が含まれている場合は、 (n)、結果は常に空でした。 m フラグが存在するかどうかに関係なく、改行を削除すると問題は解決しました。

解決策: Dotall 修飾子

原因は、dotall 修飾子が欠落していることにありました。 JavaScript。デフォルトでは、ドット (.) は改行を除く任意の文字に一致します。この制限を克服するには、文字クラスとその否定に関する回避策を使用できます。

[\s\S]

この文字クラスは、改行やその他の空白を含む任意の文字と一致します。正規表現に組み込むと、次の結果が得られます。

/<div>

DotAll フラグを使用した最新のソリューション

ES2018 の時点で、JavaScript は s (dotAll) フラグをサポートしています。このフラグは、ドットが改行と一致することを許可するように正規表現エンジンに明示的に指示し、次の回避策の必要性を排除します。

/<div>

以上がJavaScript Regex が「m」フラグを含む複数行テキストの抽出に失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。