HTMLのpattern属性を使ってフォームのバリデーションチェックを行う方法

<input>タグ内では、pattern属性に正規表現を指定することで、フォームのバリデーションチェック(入力チェック)ができます。
pattern属性の使い方
使い方はpattern属性内に正規表現を入力するだけです。
例えば、下記の場合は半角英数のみ許可します。
<input type="text" pattern="^[0-9A-Za-z]+$">仮に正規表現に合致しない全角文字を入力して送信しようとすると、「指定されている形式で入力してください。」と表示されて送信が止まります。

正規表現のパターン
いくつか使えそうな正規表現のパターンをまとめておきます。
| パターン | 正規表現 |
|---|---|
| 半角英数 | ^[0-9A-Za-z]+$ |
| 半角英数8文字 | [0-9A-Za-z]{8} |
| 半角英字 | ^[A-Za-z]+$ |
| 郵便番号 | \d{3}-\d{4} |
| 電話番号 | \d{2,4}-\d{3,4}-\d{3,4} |
| メールアドレス | [a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$ |
| 半角数字4〜8桁 | [0-9]{4,8} |
| 正の整数 | [1-9][0-9]* |
使用する上での注意点
別途チェックする場所は必要
JavaScriptを使うことなく入力チェックができるので非常に便利ですが、ユーザーが開発者ツールを開いて、設定しているpattern属性を削除すると、普通に送信できてしまいます。
そのため、このpattern属性だけ設定してそれだけで安心というわけにはいきません。
送信先のサーバーなど、別途チェックする場所は必要になります。
input type=”number”では使えないので注意
<input type="number">を使う場合はpattern属性は使えません。
そもそも<input type="number">は数値を入力するための項目なので、自動的に数値しか入力できなくなります。
min属性とmax属性で最小値と最大値の設定をしたり、step属性でステップ数の設定はできますが、これらの設定は横の上下ボタンのみにしか影響しなくて、小数や負の数は直接キーボードで入力しようとすると、入力できてしまいます。
もし特定の自然数しか許可したくない場合は、pattern属性が使えないので、JavaScriptを使って確認する必要があります。

gulp-plumberとgulp-notifyでgulpエラー時にデスクトップで通知がくるようにする
MacのRubyをrbenvで管理する方法
WordPressのwp_is_mobile()で条件分岐をするときは、キャッシュの設定に注意
無料版を使っている人は検討する価値あり!MAMP PRO 5で簡単にローカル開発環境を構築・管理する
選択テキストをHTMLタグですぐ囲めるようになるVisual Studio Code拡張機能「htmltagwrap」
PubSubHubbubを利用してWebサイトの更新をリアルタイムに通知しよう
Visual Studio Codeの「Debugger for Chrome」でJavaScriptのデバッグを行う
ブラウザでこれ以上スクロールできない場合の挙動を制御する「overscroll-behavior」プロパティ
Visual Studio Codeを使ったコード整形方法(Fomatter)
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
AppCleanerでMacアプリを関連ファイルごと完全に削除する
操作に没頭できる!Firefox版 Arcのようなブラウザ「Zen Browser」
chezmoi(シェモア)で始めるdotfiles管理
GitHubの通知を見逃さない!通知に特化したアプリ「Gitify」
Keyboard Maestroの変数基礎
Neovimを使い始める最初の一歩として便利な「LazyVim」
ウェブサイトをmacOSアプリとしてラッピングする「Unite Pro」
Keyboard Maestroの「Macro Debugger」で複雑なマクロのデバッグを行う方法
無料版でも高機能なランチャーアプリ「Raycast」の基本機能と環境設定
OnyXでターミナルを使わずにmacOSの詳細設定を行う