EメールマーケティングとEメールマーケティングの自動化CRMとデータプラットフォーム

How To Validate An Email Address With Regular Expressions (Regex). Sample HTML5, PHP, C#, Python, and Java Code.

現在、ほぼすべてのプログラミング言語が正規表現をサポートしています。 好まない開発者もいますが、検証などの機能をより少ないサーバー リソースで非常に高速に実行するため、これは本当にベスト プラクティスです。 電子メール アドレスはその好例です。適切にフォーマットされていることを簡単に確認できます。

検証ではないことに注意してください 検証. 検証とは、渡されたデータが適切に構築された標準形式に従っていることを意味します。 検証時に見落とされる可能性のある電子メール アドレスに関するいくつかの興味深い点。

What Is An Email Address?

An email address, as defined by the Internet Message Format (RFC 5322), is made up of two main parts: a local part and a domain part. The local part comes before the @ symbol and the domain part comes after. Here’s an example of an email address: example@example.comここで、 example is the local part and example.com is the domain part.

  • ローカル – The local part of an email address may contain a combination of alphanumeric characters, periods, hyphens, plus signs, and underscores. It is typically used to identify a specific mailbox or account on a server.
  • ドメイン – The domain part of an email address consists of the domain name and its top-level domain (TLD). The domain name is a string of characters that identifies the server that hosts the email account. The TLD specifies the type of entity responsible for the domain name, such as a country code (e.g. .uk) or a generic top-level domain (e.g. .com, .org).

While this is the basic structure of an email address, the rules for what constitutes a valid email address are complex.

メールアドレスの長さは?

今日はそれを見つけるために少し掘り下げなければなりませんでしたが、メールアドレスの有効な長さを知っていましたか? 実際にはパーツに分かれています… Local@Domain.com.

  1. Local can be 1 to 64 characters.
  2. ドメインは1〜255文字です。

That means that – technically – this could be a valid email address:

loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc@loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com

名刺に合わせてみてください! 皮肉なことに、ほとんどの電子メール アドレス フィールドは Web 上で 100 文字に制限されています… これは技術的に正しくありません。 電子メール アドレスの検証に使用されるその他の正規表現の中には、.com などの 3 桁のトップレベル ドメインも検索するものがあります。 ただし、長さに制限はありません トップレベルドメイン (例えば。 Martech Zone 4 桁 – .zone)。

正規表現

正規表現 is a perfect method for testing an email address because of its programmatic structure. Regular expressions are widely used in programming languages and text editors and are often integrated into text-processing libraries or frameworks. They are supported by many programming languages, including Python, Java, C#, and JavaScript, among others.

電子メール アドレスの標準化は、想像以上に複雑です。 標準に従って書かれた場合、電子メールアドレスの真の正規表現は次のとおりです。 正規表現:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

This regular expression pattern matches the basic format of an email address, including alphanumeric characters, periods, hyphens, plus signs, and underscores in the username, followed by an @ symbol, followed by a domain name. It’s important to note that this pattern will only check the format of the email address and not the actual 存在 of the email address.

HTML5 Includes Email Structure Validation

電子メールが標準に従って有効であることを確認する最も簡単な方法は、HTML5 電子メール入力フィールドを使用することです。

<input type='email' name='email' placeholder='name@domain.com' />

ただし、Web アプリケーションでは、入力時とサーバーへの送信時の両方で、ブラウザーで電子メール アドレスを検証する必要がある場合があります。

PHP での適切なメールアドレスの正規表現

気づいている人はほとんどいませんが、PHP には RFC 標準が組み込まれています。 フィルター検証関数.

if(filter_var("name@domain.com", FILTER_VALIDATE_EMAIL)) {
    // Valid
}
else {
    // Not Valid
}

Regex For A Proper Email Address in C#

Here’s basic validation of an email address in C#

using System;
using System.Text.RegularExpressions;

public class EmailValidator
{
    public static bool IsValidEmail(string email)
    {
        string pattern = @"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$";
        return Regex.IsMatch(email, pattern);
    }
}

Practical use of this method:

string email = "example@example.com";
if (EmailValidator.IsValidEmail(email))
{
    Console.WriteLine(email + " is a valid email address.");
}
else
{
    Console.WriteLine(email + " is not a valid email address.");
}

Regex For A Proper Email Address in Java

Here’s basic validation of an email address in Java

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EmailValidator {
    private static final Pattern VALID_EMAIL_ADDRESS_REGEX = 
        Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE);

    public static boolean isValidEmail(String email) {
        Matcher matcher = VALID_EMAIL_ADDRESS_REGEX .matcher(email);
        return matcher.find();
    }
}

Practical use of this method:

String email = "example@example.com";
if (EmailValidator.isValidEmail(email)) {
    System.out.println(email + " is a valid email address.");
} else {
    System.out.println(email + " is not a valid email address.");
}

Regex For A Proper Email Address in Python

Here’s a basic validation of an email address in Python:

import re

def is_valid_email(email):
    pattern = re.compile(r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$')
    return True if pattern.match(email) else False

Practical use of this method:

email = "example@example.com"
if is_valid_email(email):
    print(f"{email} is a valid email address.")
else:
    print(f"{email} is not a valid email address.")

Javascript での適切なメールアドレスの正規表現

電子メール アドレス構造をチェックするための過度に複雑な基準を用意する必要はありません。 JavaScript を使用した簡単な方法を次に示します。

function validateEmail(email) 
{
    var re = /\\S+@\\S+/;
    return re.test(email);
}

もちろん、これは RFC 標準に準拠していないため、データの各セクションを検証して有効であることを確認したい場合があります。 この正規表現は、約 99.9% の電子メール アドレスに準拠します。 完全に標準化されているわけではありませんが、ほぼすべてのプロジェクトに役立ちます。

function validateEmail(email) 
{
  var re = /^(?:[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/;

  return re.test(email);
}

Credit for some of these examples goes to HTML.form.guide.

Douglas Karr

Douglas Karr の創設者です Martech Zone デジタルトランスフォーメーションの専門家として認められています。 Douglas は、いくつかの成功した MarTech スタートアップの立ち上げを支援し、Martech の買収と投資で 5 億ドル以上のデューデリジェンスを支援し、独自のプラットフォームとサービスを立ち上げ続けています。 彼は共同創設者です Highbridge、デジタル トランスフォーメーション コンサルティング会社。 Douglas は、Dummie's Guide およびビジネス リーダーシップの書籍の著者でもあります。

41のコメント

  1. 複数のメールアドレスを持つフォームの場合は、class =” emailaddress”を実行するとよいでしょう。 あなたがprototype.jsライブラリを持っているなら(http://www.prototypejs.org)ページに含まれているあなたはこのようなことをすることができます:

    var 有効 = true;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$( '。emailaddress')。each(function(email){
    if(!filter.test(email.value)){
    alert(?有効なメールアドレスを入力してください?);
    メール.フォーカス;
    有効= false;
    }
    });
    有効な戻り値。

  2. 私はそのアイデアが好きですが、どの正規の電子メールアドレスを受け入れず、どの違法なアドレスを許可するかを説明せずに、この特定の正規表現を採用することを躊躇します。

    適切な仕事をする正規表現の例と、それがカバーしていないケースの説明については、次を参照してください。

    http://www.regular-expressions.info/email.html

    私の個人的な好みは、単純なケースのほとんどをカバーし、それを拒否するのではなく、他のすべてに対して警告を出すことです。 ボブが本当に送信したい場合 bob@com.museum ではなく bob@museum.com、なぜ彼にさせないのですか?

    1. こんにちはReg、

      を利用して正規表現をテストできます オンライン正規表現テスター.

      また、確実にしたい場合にできることは間違いなくもっとたくさんあります メールアドレス RFCに従って有効です。

      誰かが無効なメールアドレスを入力することを許可しない理由はいくつかあります。
      1.アドレスが間違って入力されたのがあなたのせいであるかどうかに関係なく、彼らが期待した電子メールが届かないとき、彼らはあなたに腹を立てます。
      2. com.museumが有効なドメインであり、たとえばYahoo! それを操作しました–バウンスした電子メールアドレスは、電子メール配信に対する会社の評判に悪影響を及ぼします。 これにより、会社のすべての電子メールがブロックされる可能性があります。
      3.メールサービスプロバイダーが入力を許可した場合 bob@com.museum、バウンスのためにそのアドレスの購読を解除するまで、その電子メールアドレスに送信された各電子メールの料金も支払います。 私はそのような無効な電子メールアドレスを許可するESPを避けます-彼らはあなたのお金を取っているだけです!

      やめてくれてありがとう!
      ダグ

  3. 式を書くもっと簡単な方法があります:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    –最後の修飾子/ iを使用すると、大文字の範囲を示す必要はありません。
    –私は何も知りません TLD 数字が入っています。
    ちなみに、私は最大6文字のTLDを許可しています。 新しいものは定期的に到着し、あなたは決して知りません(まあ、将来のものはそれに数字が含まれているかもしれません、私は知っています)。

  4. こんにちは、

    これを既存の形式でリアルタイムで使用しようとしていますが、パスワード強度チェッカーのようにリアルタイムで検証されていないようです…

    または、私はそれだけ無知であり、それは私にとってはうまくいきませんか?

  5. ところで、私はあなたがここで行っていることを本当に気に入っています、あなたのチュートリアルはとてもシンプルです、私は間違いなくこれをブックマークします…。

  6. ちょっとした修正:正規表現の最後に余分な()+があります。 それは読むべきです:

    ^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$

    最初のものでは、任意の長さのTLDが受け入れられます(他の人が指摘しているように本質的に間違っているわけではありませんが、それが意図されている場合は、式を短くすることができます)。

  7. このコードの正規表現とその動作について説明してください。 .testについても– .testは、上記のコードで行ったようにチェックするためのjavascriptのデフォルトステートメントですか?

  8. これはメール表現のショートコードです-

    関数validateEmail(id)
    {
    var emailPattern = / ^ [a-zA-Z0-9 ._-] + @ [a-zA-Z0-9 .-] +。[a-zA-Z] {2,4} $ /;
    emailPattern.test(id);を返します。

    }
    ディーパックライ
    バラナシ

  9. ありがとう、しかしこの正規表現にはエラーがあります。 私は正規表現の専門家ではありませんが、メールを試しました。

    test @ test

    そしてそれは正規表現を通過しました…私はそれが「。」を逃れるのに欠けていることに気づきました。 したがって、次のようになります。

    /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/

  10. まあ、これは大まかなチェックですが、100%正確ではありません。たとえば、これは問題ありません。 john_doe。@ gmail.com これは実際には有効な電子メールアドレスではありません(ドットは電子メールのローカル部分の最後の文字として許可されていません)。
    また、それは受け入れます ジョン…doe@gmail.com シーケンスに複数のドットを含めることはできないため、これも無効です。

    これらは私が一目で気づいたいくつかの欠陥です。
    私の意図は、誰かがこれをセキュリティチェックとして使用することを計画している場合に備えて、これを指摘するためだけにバッシングすることではありません-十分に安全ではありません。

    有効な電子メールアドレスについては、以下を確認してください。 http://en.wikipedia.org/wiki/E-mail_address

  11. ディーパック、

    実際には、ドット(「。」)にエスケープを適用する必要があると思います。 したがって、代わりに、関数は次のようになります。

    関数validateEmail(id)
    {
    var emailPattern = / ^ [a-zA-Z0-9 ._-] + @ [a-zA-Z0-9 .-] +。[a-zA-Z] {2,4} $ /;
    emailPattern.test(id);を返します。

    }

    それ以外の場合、ドットは「任意の文字」を意味します。 そのような特殊文字はエスケープする必要があると思います。

    よろしく、

    フェデリコ

  12. 関数validateEmail(fld){
    var error =””;
    var tfld = trim(fld.value); //空白が削除されたフィールドの値
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    varillegalChars = / [()、;:\” []] /;

    if(fld.value ==“メールアドレスを入力してください”){

    エラー=「メールアドレスを入力してください。n」;
    } else if(!emailFilter.test(tfld)){//不正な文字がないかメールをテストする

    エラー=「有効なメールアドレスを入力してください。n」;
    } else if(fld.value.match(illegalChars)){

    エラー=「有効なメールアドレスを入力してください。n」;
    }
    エラーを返します。
    }

  13. 関数validateEmail(fld){
    var error =””;
    var tfld = trim(fld.value); //空白が削除されたフィールドの値
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    varillegalChars = / [()、;:\” []] /;

    if(fld.value ==“メールアドレスを入力してください”){

    エラー=「メールアドレスを入力してください。n」;
    } else if(!emailFilter.test(tfld)){//不正な文字がないかメールをテストする

    エラー=「有効なメールアドレスを入力してください。n」;
    } else if(fld.value.match(illegalChars)){

    エラー=「有効なメールアドレスを入力してください。n」;
    }
    エラーを返します。
    }

  14. 関数validateEmail(fld){
    var error =””;
    var tfld = trim(fld.value); //空白が削除されたフィールドの値
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    varillegalChars = / [()、;:\” []] /;

    if(fld.value ==“メールアドレスを入力してください”){

    エラー=「メールアドレスを入力してください。n」;
    } else if(!emailFilter.test(tfld)){//不正な文字がないかメールをテストする

    エラー=「有効なメールアドレスを入力してください。n」;
    } else if(fld.value.match(illegalChars)){

    エラー=「有効なメールアドレスを入力してください。n」;
    }
    エラーを返します。
    }

  15. 関数validateEmail(fld){
    var error =””;
    var tfld = trim(fld.value); //空白が削除されたフィールドの値
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    varillegalChars = / [()、;:\” []] /;

    if(fld.value ==“メールアドレスを入力してください”){

    エラー=「メールアドレスを入力してください。n」;
    } else if(!emailFilter.test(tfld)){//不正な文字がないかメールをテストする

    エラー=「有効なメールアドレスを入力してください。n」;
    } else if(fld.value.match(illegalChars)){

    エラー=「有効なメールアドレスを入力してください。n」;
    }
    エラーを返します。
    }

おわりに

このサイトでは、スパムを減らすためにAkismetを使用しています。 コメント処理方法.

関連記事