1

メール検証スクリプトを使用していますが、ユーザーが test@me.com や temp@ip.com などのドメインに 2 文字だけのアドレスを入力しようとした場合を除いて、すべて問題ありません。

その後、検証でエラーが発生します。調べてみましたが、この動作がどこでターゲットにされているかわかりません。コードは以下のとおりです...

function validate_youremail()
{
    var isvalidemailflag = 0;
    if(jQuery("#property_mail_email").val() == '')
    {
        isvalidemailflag = 1;
    }else
    if(jQuery("#property_mail_email").val() != '')
    {
        var a = jQuery("#property_mail_email").val();
        var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
        //if it's valid email
        if(filter.test(a)){
            isvalidemailflag = 0;
        }else{
            isvalidemailflag = 1;   
        }
    }
    if(isvalidemailflag)
    {
        youremail.addClass("error");
        youremailInfo.text("Please Enter valid Email Address");
        youremailInfo.addClass("message_error2");
        return false;
    }else
    {
        youremail.removeClass("error");
        youremailInfo.text("");
        youremailInfo.removeClass("message_error");
        return true;
    }

それはおそらく私をまっすぐに見つめていますが、長い一日でした:)誰か私を正しい方向に向けることができますか?

4

3 に答える 3

1

別の正規表現を使用することをお勧めします。

この正規表現は、C で記述された PHP ソース コードから抽出されたものです。

/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/i
.test('temp@ip.com');
于 2012-08-08T09:40:04.890 に答える
1

RFC2822 規格に準拠した電子メール検証。

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

ソース:正規表現

RFC2822 標準ではメール アドレスに大文字を使用できませんが、目的に合わせて大文字を簡単に変更できます。

于 2012-08-08T09:27:02.897 に答える