2

私は jQuery と正規表現に不慣れで、designchemical.com からこの機能に追加の一時電子メール ドメインを追加する最良の方法は何かと考えていました。

<script type="text/JavaScript">
// prepare the form when the DOM is ready 
$(document).ready(function() { 

    $('#submit').click(function() {  

            $(".error").remove();
            var hasError = false;
            var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
            var emailblockReg =  /^([\w-\.]+@(?!mailinator.com)(?!guerrillamail.com)(?!mytrashmail.com)(?!mailexpire.com)([\w-]+\.)+[\w-]{2,4})?$/;

            var emailaddressVal = $("#Email").val();
            if(emailaddressVal == '') {
                $("#Email").after('<span class="error">Please enter your email!</span>');
                hasError = true;
            } else if(!emailReg.test(emailaddressVal)) {    
                $("#Email").after('<span class="error">Enter a valid email!</span>');
                hasError = true;
            } else if(!emailblockReg.test(emailaddressVal)) {   
                $("#Email").after('<span class="error">No Disposable E-Mail Address!</span>');
                hasError = true;
            } 

            if(hasError == true) { return false; }
    }); 
});
</script>
4

3 に答える 3

2

最初に、常にバックエンドで検証を行う必要があることを前置きします。それでも jQuery を使用したい場合 (初期スクリーニングなど) は、次のようにします。

電子メールの正規表現に別のグループを追加します。

var emailReg = /^([\w-\.]+@(([\w-]+\.)+[\w-]{2,4}))?$/;

不要なドメインの配列を作成または渡します。

var bad_domains = ['comcast.net', 'gmail.com'];

それぞれに対してドメインを確認しますbad_domain

var emailMatch = emailAddressVal.match(emailRex)
    domain = emailMatch[3];
for (var i = 0; i < bad_domains.length; i += 1) {
    if (domain.toLowerCase() == bad_domains[i])
        return false;
}

カスタム アクションを追加するには、return falseをそのカスタム アクションに置き換えるだけです。

于 2013-03-12T20:46:57.853 に答える