0

こんにちは、正規表現を使用して電子メールを検証しようとしています。これは私のコードです:

       <input type="text" name="email" id="email"/>

       var email = $("input#email"),
       re =  /^[A-Za-z0-9][a-zA-Z0-9._-][A-Za-z0-9]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/; 

       if(re.test(email.val())){
           alert("email valid");
       }else{
           alert("email not valid");
       } 

テキスト フィールドに何を入力しても、電子メールが無効であると表示されます。何が問題ですか?

4

4 に答える 4

2

同様の質問に答えました:https://stackoverflow.com/a/12674524/340736

あなたへの私のお勧めは、あなたが自分のものであると転がそうとしないことです. あなたはおそらくそれを間違っているでしょう。RFC 822 などの標準に従うようにしてください。自分で行うのはそれほど簡単ではありませんが、これを行うライブラリがあります。

例はVerimail.jsです。RFC 822 に従いますが、IANA によって登録された TLD の完全なリストに従って TLD 検証も行います。

使い方も簡単です:

var email = "cool@fabeook.cmo";
var verimail = new Comfirm.AlphaMail.Verimail();

verimail.verify(email, function(status, message, suggestion){
    if(status < 0){
        // Incorrect syntax!
    }else{
        // Syntax looks great!
    }
});

上記の例では、「Incorrect syntax!」という行にヒットします。TLD 'cmo' が無効なためです。これに加えて、ユーザーに返すことができる提案も提供します。この場合、「fabeook.cmo」は「facebook.com」によく似ているため、提案変数には「cool@facebook.com」が含まれます。

お役に立てれば!

于 2012-10-01T14:09:22.640 に答える
1

私が使う

function is_email(a){return /^([\w!.%+\-])+@([\w\-])+(?:\.[\w\-]+)+$/.test(a);}

私の電子メール検証用。思い出したように、それは少し前にFacebookのサインアップページからのものでした.

あなたはただする必要があります:

if (!is_email($('#email').val()) {
   alert('invalid email and all that');
}
于 2012-07-11T12:25:05.137 に答える
1

本当に奇妙な正規表現を使用しています。

これを見てください:

[A-Za-z0-9][a-zA-Z0-9._-][A-Za-z0-9]

これは、1 つの英数字、次に英数字または ./_/-、1 つ以上の英数字に一致します。

少し編集したwww.regular-expressions.infoからこの正規表現を試してください。

/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9]{2,4}$/
于 2012-07-11T12:26:09.713 に答える