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を使って確認する必要があります。

Webサイト制作の基礎の基礎、HTMLって何?
goenvを使って、MacにGo言語をインストールする
gulpfile.jsにAutoprefixerのブラウザオプションを書くとエラーがでる場合の修正方法
pointer-eventsプロパティでクリックイベントを無効化にする|気になるCSSプロパティ
CSSで1行で簡単にスムーススクロールを実装できる「scroll-behavior」プロパティ
CSSのカスタムプロパティ(変数機能)の使い方
疑似クラスの:hoverと:activeのスマホでの挙動の違い
js-cookieでウェブサイトのダークモード表示設定をユーザーごとに保存しておく方法
Dart Sassの変数の基本的な使い方|Dart Sass入門
Nuxt.jsでコンポーネントを作成してコードの共通化を行う|Nuxt.jsの基本
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」
Gitで1行しか変更していないはずのに全行変更した判定になってしまう
Macでアプリごとに音量を調節できるアプリ「Background Music」
Macのターミナルでパスワード付きのZIPファイルを作成する方法
MacBook Proでディスプレイのサイズ調整をして作業スペースを広げる
SteerMouseの「自動移動」機能で保存ダイアログが表示されたら自動でデフォルトボタンへカーソルを移動させる
iPhoneでタッチが一切効かなくなった場合に強制再起動する方法