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

Barbara Streisand
リリース: 2024-10-28 06:26:02
オリジナル
141 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!