ホームページ >ウェブフロントエンド >jsチュートリアル >正規表現パターンが HTML パターン属性の u フラグでは機能するのに、v フラグでは失敗するのはなぜですか?
正規表現の有効性の謎を解く: HTML パターン属性の RegExp u フラグと v フラグ間の不一致を理解する
この問い合わせは、 HTML パターン属性内の正規表現パターンに関する独特のコンソール警告:
^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$
興味深いことに、このパターンは RegExp u フラグでは有効であると見なされますが、v フラグでは有効ではないため、根本的な原因は何かという疑問が生じます。どうすれば修正できますか?
v フラグの魔法の領域を解読する
問題の核心は、HTML パターン属性に最近追加された v フラグにあります。このフラグは、この属性内で RegExp オブジェクトをコンパイルするときに自動的にアクティブになるため、無敵のオーラを呼び起こします。したがって、パターン属性に割り当てられた値は正規表現に変換され、この v フラグをお守りとして身に着けます。
HTML パターン属性ユニバースへの侵入
HTML パターン属性のリファレンスは、いくつかの興味深い洞察を明らかにします。
v フラグの魅力の影響
v フラグは幻想的な呪文を唱え、追加の制約をオブジェクトに課します。エスケープ文字のルール。文字クラスの前衛にあるワイルドで不屈のダッシュ (-) には、慈悲深いガイドであるバックスラッシュ () が必要になりました。この強力なデュオは調和して踊り、V フラッグの支配力が損なわれないようにします。
比較幕間: u 対 v
v とは対照的な U フラッグ兄弟は、より優しいタッチを行使します。ダッシュ (-) をエスケープすることに対する厳格な禁止が無視され、文字クラスの末尾に自由に存在することが許可されています。
HTML の領域では、この分裂は見事に現れています:
<code class="js">console.log(/^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/u.test("[email protected]")) console.log(/^[a-zA-Z0-9+_.\-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/v.test("[email protected]"))</code>
以上が正規表現パターンが HTML パターン属性の u フラグでは機能するのに、v フラグでは失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。