メール・電話・郵便番号などの入力を正規表現で検証する実践的なコツと落とし穴。
フォーム検証において、正規表現は形式が規則的な入力によく合います。文字列全体が形式と一致するかを見るには、両端を ^ と $ で固定する必要があります。アンカーがないと文字列の一部だけ合っても通過してしまい、検証が破られます。HTMLの input pattern 属性にも同じ正規表現をそのまま使えます。
電話番号・郵便番号・IDのように桁数と文字種が決まっている値は、文字クラスと量指定子だけで十分です。ただし規則を過度に狭めると、国際電話、新しい郵便番号体系、ハイフンの有無のような有効な変形を弾いてしまいます。実際のデータの多様性をまず確認してください。
メールは正規表現で完璧に検証しようとしないでください。公式規格(RFC 5322)は過度に複雑で、実務用の正規表現で再現するのは困難です。@ とドットを含むか程度を緩く確認し、本当の有効性は確認メールの送信で検証するのが定石です。
ブラウザの正規表現検証はユーザー体験(UX)のためのものであって、最終防衛線ではありません。サーバー側で必ず再検証し、信頼できない入力には破滅的バックトラッキング(ReDoS)に注意してください(資料室のパフォーマンスの記事を参照)。