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


疑似クラスの:hoverと:activeのスマホでの挙動の違い
Nuxt.jsの「layouts」を使用してレイアウトの共通化を行う方法|Nuxt.jsの基本
Android実機で表示しているサイトを、Chrome開発者ツールで開いて検証する方法
PubSubHubbubを利用してWebサイトの更新をリアルタイムに通知しよう
CSS疑似要素(::beforeや::after)のcontent内で改行したり半角スペースを複数入力する方法
Vue Routerでページ遷移後にトーストを表示させる方法
アイコンフォントをPCにインストールしている場合は、コーディング後の確認に注意
MacでCLIツールをインストールするときに行うターミナルでの「パスを通す」とは一体なにか?
JavaScriptで簡単にCookie操作ができるライブラリ「js-cookie」
Visual Studio CodeでDart Sassのコンパイルができる拡張機能「DartJS Sass Compiler and Sass Watcher」
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
ウェブ開発時のテスト環境と本番環境の取り違えを防ぐChrome拡張機能「Environment Marker」
【2026年版】Karabiner-Elementsで実現する右commandキー活用のススメ
Bartender ProのTop Shelf機能でできること
高機能なスクリーンショットアプリ「CleanShot X」
macOSの効率化に関するDiscordコミュニティ「CMD-F」を立ち上げました
1Passwordの開発者向け機能(SSH Agent / Environments / 1Password CLI / Developer Watchtower)
Default Folder Xで保存ダイアログ内のファイルリストにフォーカスする方法
Obsidianで整理した知識をAnkiで定着させる方法
Figma × Keyboard Maestroでどこまで効率化できる?
マウス操作の完成度が高いウインドウリサイズアプリ「Magnet」