0
//if HTML5 input email input is not supported
if(type == 'email'){    
    if(!Modernizr.inputtypes.email){ 
         var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@([a-zA-Z0-9\-])+\.+([a-zA-Z0-9]{2,4})+$/;              
         if( !emailRegEx.test(value) ){ 
            this.focus();
            formok = false;
            errors.push(errorMessages.email + nameUC);
            return false;
        }
    }
}

これは、電子メール形式が正しいかどうかを確認するための私の JavaScript 正規表現です。しかし、私が自分で試してみると、..@. のエラーは表示されません。最終的に .com などはチェックされません。私は何を間違っていますか?

4

1 に答える 1

1

メールアドレスに実際に適合する正規表現を使用する必要があります。受け入れられない有効なアドレスがたくさんあるため、現在のアドレスは完全に壊れています。

結局のところ、正規表現がそれほど良い考えではない理由と、より詳細な説明と議論については、http://www.regular-expressions.info/email.htmlを参照してください。

とにかく、これはおそらくあなたのニーズに合うものです:

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

この正規表現についてregular-expressions.infoが言うことは次のとおりです。

二重引用符と角括弧を使用して構文を省略した場合、RFC 2822 のより実用的な実装が得られます。現在でも、実際に使用されているすべての電子メール アドレスの 99.99% と一致します。

于 2012-04-29T10:55:04.273 に答える