参考資料:RFC 5322、email-validator、js-email-validation
JavaScriptでメールアドレスを検証するには、いくつかの方法があります。
- 正規表現:最も一般的な方法です。メールアドレスの形式に合致するかどうかをチェックします。
- HTML5のinput type="email"属性: HTML5で導入された属性です。ブラウザが自動的に検証を行います。
- ライブラリ: メールアドレス検証に特化したライブラリを使用する方法です。
正規表現による検証
正規表現は、文字列のパターンを抽出・置換するためのツールです。メールアドレスの形式は、RFC 5322で定義されています。
^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-]+)\.([a-zA-Z]{2,5})$
上記の正規表現は、以下の条件を満たすメールアドレスを検証します。
- 最初の部分 (
^
) は、文字列の始まりを表します。 [a-zA-Z0-9_\-\.]+
は、英数字、アンダーバー、ハイフン、ピリオドが1文字以上続くことを表します。@
は、アットマークを表します。([a-zA-Z0-9_\-]+)
は、2つ目の部分と同じ条件を表します。\.
は、ピリオドを表します。([a-zA-Z]{2,5})
は、2文字から5文字までの英字が続くことを表します。$
は、文字列の終わりを表します。
以下のコードは、正規表現を使ってメールアドレスを検証する例です。
<input type="text" id="email">
<button onclick="validateEmail()">送信</button>
<script>
function validateEmail() {
const email = document.getElementById('email').value;
const regex = /^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-]+)\.([a-zA-Z]{2,5})$/;
if (!regex.test(email)) {
alert('メールアドレスが正しくありません');
}
}
</script>
HTML5のinput type="email"属性
HTML5で導入されたinput type="email"
属性を使うと、ブラウザが自動的にメールアドレスの形式をチェックしてくれます。
<input type="email" id="email">
ライブラリ
メールアドレス検証に特化したライブラリを使うと、簡単に検証を行うことができます。
これらのライブラリは、正規表現による検証よりも簡単に、より多くの条件を検証することができます。
JavaScriptでメールアドレスを検証するには、いくつかの方法があります。それぞれの方法にはメリットとデメリットがあり、目的に合わせて使い分けることが重要です。
<input type="text" id="email">
<button onclick="validateEmail()">送信</button>
<script>
function validateEmail() {
const email = document.getElementById('email').value;
const regex = /^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-]+)\.([a-zA-Z]{2,5})$/;
if (!regex.test(email)) {
alert('メールアドレスが正しくありません');
}
}
</script>
<input type="email" id="email">
email-validator
<input type="text" id="email">
<button onclick="validateEmail()">送信</button>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/email-validator.min.js"></script>
<script>
function validateEmail() {
const email = document.getElementById('email').value;
if (!emailValidator.validate(email)) {
alert('メールアドレスが正しくありません');
}
}
</script>
<input type="text" id="email">
<button onclick="validateEmail()">送信</button>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js-email-validation.min.js"></script>
<script>
function validateEmail() {
const email = document.getElementById('email').value;
if (!isValidEmail(email)) {
alert('メールアドレスが正しくありません');
}
}
</script>
注意
これらのサンプルコードはあくまでも参考です。実際の開発では、目的に合わせてコードを修正する必要があります。
JavaScriptでメールアドレスを検証する他の方法
メール送信APIの利用
MailgunやSendGridなどのメール送信APIを利用して、実際にメールを送信することで検証する方法です。
メリット
- 最も正確な検証方法
- メールアドレスが存在するかどうかを確認できる
- APIキーの取得が必要
- 送信コストがかかる
DNSレコードの確認
MXレコードやSPFレコードなどのDNSレコードを確認することで、メールアドレスのドメインが有効かどうかを確認する方法です。
- DNSレコードの設定方法を理解する必要がある
- 全てのメールアドレスに対応しているわけではない
ブラックリストの利用
既知のスパム送信者リスト (ブラックリスト) を利用して、検証する方法です。
- 簡単に実装できる
- 処理速度が速い
- ブラックリストに登録されていないスパム送信者を見逃す可能性がある
画像認証 (CAPTCHA) を利用して、ボットによる不正な登録を防ぐ方法です。
- ボットによる不正な登録を防げる
- ユーザーにとって使いにくい
上記の方法はそれぞれメリットとデメリットがあります。目的に合わせて適切な方法を選択することが重要です。
javascript html regex