JavaScriptと正規表現でメールアドレスを確認する

少し前に私は JavaScriptと正規表現を使用したパスワード強度チェッカー。 同じメモで、同じ正規表現(regex)方法論を使用して電子メールアドレスの構造を確認することもできます。

フォーム要素に id =” emailaddress” フォームを追加します onSubmit =” return checkEmail();「これは、メールアドレスの構造が有効かどうかに関係なくアラートを返すために利用できるJavascript関数です。

function checkEmail() {
var email = document.getElementById('emailaddress');
var filter = /^(([^<>()[\]\\.,;:\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,}))$/;
if (!filter.test(email.value)) {
alert('Please provide a valid email address');
email.focus;
return false;
}
}

この関数は、電子メールの内容をフィルターの内容に検証します。 比較が失敗すると、アラートがポップアップし、フォーカスがメールアドレスフィールドに戻ります。

41のコメント

  1. 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(?有効なメールアドレスを入力してください?);
    email.focus;
    有効= false;
    }
    });
    有効な戻り値。

  2. 5
  3. 7

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

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

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

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

    • 8

      こんにちはReg、

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

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

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

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

  4. 9
  5. 10

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

  6. 11

    こんにちは、

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

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

  7. 12

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

  8. 13
  9. 16
  10. 17

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

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

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

  11. 18

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

  12. 19

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

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

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

  13. 20

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

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

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

  14. 21
  15. 22
  16. 23

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

    test @ test

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

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

  17. 24
  18. 27

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

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

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

  19. 28

    ディーパック、

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

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

    }

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

    よろしく、

    フェデリコ

  20. 29

    関数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」;
    }
    エラーを返します。
    }

  21. 30

    関数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」;
    }
    エラーを返します。
    }

  22. 31

    関数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」;
    }
    エラーを返します。
    }

  23. 32

    関数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」;
    }
    エラーを返します。
    }

  24. 33
  25. 34
  26. 35
  27. 36
  28. 37
  29. 38
  30. 39
  31. 40

どう思いますか?

このサイトはAkismetを使用して迷惑メールを減らします。 コメントの処理方法を学ぶ.