JavaScript の正規表現を使用して電子メールを検証する
- 2 ~ 3 文字の TLD 間のメールをチェックし、メール内の文字と JavaScript のドメイン名を許可しない
- 2つから 6つの TLD 名の間の電子メールをチェックし、JavaScript で電子メール名のプラス記号を許可しない
- 電子メールを確認し、電子メールで数字と有効な文字を許可し、JavaScript でドメイン名を許可する
- JavaScript で RFC 5322 形式の電子メール アドレスを確認する
- まとめ
この記事では、さまざまな種類のメール アドレスを検証できる複数の正規表現について説明します。 したがって、ユースケースに最適なパターンの 1つを変更または選択できます。
2 ~ 3 文字の TLD 間のメールをチェックし、メール内の文字と JavaScript のドメイン名を許可しない
2つから 3つの TLD の間の電子メール アドレスを許可する正規表現を作成できます。 たとえば、.com
や .io
などです。
これは、パターンが次の特性を持つ電子メールを許可しないことも意味します。
- 3 文字を超える TLD、たとえば
.mobi
- 複数の TLD。 (
.gmail.sa
) - 数字を含むドメイン、例:
tech125.com
- メール名のピリオド (
.
) またはハイフン (-
) - ドメイン名のハイフン
以下のコード例では、abc@gmail.com
、hello@hello.com
、ab0c@gmail.com
などの電子メール アドレスに対して true
を返す正規表現があります。
let pattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/;
function checkEmailAddress(email_address) {
let result = pattern.test(email_address);
console.log(result);
}
checkEmailAddress('abc@gmail.com')
出力:
true
一方、パターンは次の電子メール アドレスに対して false
を返します。
ab0c@my-domain.com
2つから 6つの TLD 名の間の電子メールをチェックし、JavaScript で電子メール名のプラス記号を許可しない
正規表現パターンでは、電子メール アドレスで完全な停止記号 (.
) を許可し、プラス記号 (+
) を禁止することができます。 これは、プラス記号が付いた電子メール アドレスが正規表現を通過しないことを意味します。
そのため、有効であっても false
を返します。 このセクションで定義するパターンは、次の特性を持つ電子メールに対して false
を返します。
- プラス記号 (
+
) が付いたメール - 6 文字を超える TLD。 ("。テクノロジー")
次のコードには、新しい正規表現があります。 一方、このパターンは、前のセクションの最後のメールに対して true
を返します。
let pattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/;
function checkEmailAddress(email_address) {
let result = pattern.test(email_address);
console.log(result);
}
checkEmailAddress('ab0c@my-domain.com')
出力:
true
一方、以下にリストされている電子メール アドレスは、このパターンを通過しません。 ただし、一部の電子メール プロバイダーではすべて有効です。
ab+c@my-domain.com
mr+john@my-domain.com.ga
電子メールを確認し、電子メールで数字と有効な文字を許可し、JavaScript でドメイン名を許可する
現在存在する有効なメール アドレスのほとんどを許可する柔軟な正規表現パターンを作成できます。 このような電子メールには、次のような特徴があります。
- 電子メールと TLD 名にピリオドとサインインのような一部の文字。
.technology
や.business
などの新しい TLD。
このパターンの欠点は、これらの文字を複数許可することです。 その結果、ユーザーは有効に見える非常に長い電子メール アドレスを渡すことができますが、そうではありません。
let pattern =
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
function checkEmailAddress(email_address) {
let result = pattern.test(email_address);
console.log(result);
}
checkEmailAddress('johndoe@citadel-consulting.com');
出力:
true
ただし、次の無効な電子メール アドレスはこのパターンを通過します。
aaa++++++++++@gmail.technologyyyyyyyyyyyyyyyyyyyyyyyyyyy.com
JavaScript で RFC 5322 形式の電子メール アドレスを確認する
RFC 5322 形式に準拠した正規表現パターンを記述できます。 ただし、このような正規表現は長くなります。
結果、わからなくなることがあります。 そのため、JavaScript の RegExp
クラスで簡略版を使用できます。
次のコードでは、RFC 5322 に準拠した正規表現パターンを実装しています。したがって、最も有効な電子メール アドレスに対して true
を返します。
let pattern = new RegExp(
'([!#-\'*+/-9=?A-Z^-~-]+(\.[!#-\'*+/-9=?A-Z^-~-]+)*|"\(\[\]!#-[^-~ \t]|(\\[\t -~]))+")@([!#-\'*+/-9=?A-Z^-~-]+(\.[!#-\'*+/-9=?A-Z^-~-]+)*|\[[\t -Z^-~]*])');
function checkEmailAddress(email_address) {
let result = pattern.test(email_address);
console.log(result);
}
checkEmailAddress('aa@gmail.com.sa');
出力:
true
まとめ
この記事では、メール アドレスを検証するさまざまな正規表現パターンについて説明しました。 ただし、それはすべてクライアント側にあります。
セキュリティを強化するために、サーバー側でも電子メールを検証することをお勧めします。
Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.
LinkedIn