ホームページ  >  記事  >  ウェブフロントエンド  >  HTML パターン属性の「v」フラグにより​​正規表現パターンが失敗するのはなぜですか?

HTML パターン属性の「v」フラグにより​​正規表現パターンが失敗するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-28 06:26:02142ブラウズ

Why Does My Regular Expression Pattern Fail with the

Unicode フラグを使用した正規表現パターンの有効性

HTML パターン属性の RegExp パターンの問題

HTML パターン属性で「v」フラグを含む正規表現パターンを使用すると、「SyntaxError」エラーが発生する場合があります。このエラーは、パターンを RegExp オブジェクトにコンパイルするときに「v」フラグが自動的に適用されるために発生します。

文字クラスの減算とエスケープ

「v」フラグにより​​、より厳格なエスケープ規則。文字クラスの末尾にリテラルの「-」文字を使用することは許可されません。これは、そのような制限がない「u」フラグとは対照的です。

「u」および「v」フラグを使用した正規表現パターン

次のことを考慮してください。正規表現パターン:

^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$

「u」フラグを適用した場合:

<code class="js">console.log(/^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/u.test("[email protected]")); // true</code>

「v」フラグを適用した場合 (HTML パターン属性で自動的に):

<code class="js">console.log(/^[a-zA-Z0-9+_.\-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/v.test("[email protected]")); // SyntaxError</code>

解決策

エラーを解決するには、文字クラスの末尾にある「-」文字をエスケープする必要があります。修正されたパターンは次のとおりです。

^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$

このパターンは、「v」フラグの有無にかかわらず正しく動作するようになりました。

以上がHTML パターン属性の「v」フラグにより​​正規表現パターンが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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