JavaScriptで正しいメールアドレスかチェックする関数

ちゃんと使えるように

あまり正確なチェックにしすぎると使えないものになってしまうのである程度ファジーにしてありますが、よくある単純なバリデータよりはちゃんと働いてくれるように調整してます。

  • 全角が入っていた場合、エラーになります。
  • 末尾のTLDが誤字しやすいのでチェックをしています。(.co,jpとかの対策)
  • アットマークの前のドットや、連続ドットは許可しています。(古いdocomoアドレス対策)
// -------------------------------------------------------------------
// メールアドレスチェック関数
// -------------------------------------------------------------------
function MailCheck( mail ) {
    var mail_regex1 = new RegExp( '(?:[-!#-\'*+/-9=?A-Z^-~]+\.?(?:\.[-!#-\'*+/-9=?A-Z^-~]+)*|"(?:[!#-\[\]-~]|\\\\[\x09 -~])*")@[-!#-\'*+/-9=?A-Z^-~]+(?:\.[-!#-\'*+/-9=?A-Z^-~]+)*' );
    var mail_regex2 = new RegExp( '^[^\@]+\@[^\@]+$' );
    if( mail.match( mail_regex1 ) && mail.match( mail_regex2 ) ) {
        // 全角チェック
        if( mail.match( /[^a-zA-Z0-9\!\"\#\$\%\&\'\(\)\=\~\|\-\^\\\@\[\;\:\]\,\.\/\\\<\>\?\_\`\{\+\*\} ]/ ) ) { return false; }
        // 末尾TLDチェック(〜.co,jpなどの末尾ミスチェック用)
        if( !mail.match( /\.[a-z]+$/ ) ) { return false; }
        return true;
    } else {
        return false;
    }
}

動作サンプル

<script src="https://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="check-mailaddress.js"></script>
<input type="text" id="mailaddress">
<input type="button" value="チェック!" onclick="if(MailCheck($('#mailaddress').val())){alert('正しいメールアドレスです!')}else{alert('正しくない可能性があります・・。')}">

参考にさせていただいたサイト