【问题标题】:jquery email validation for valid email addresses like gmail.comjquery 电子邮件验证有效的电子邮件地址,如 gmail.com
【发布时间】:2012-07-19 01:52:12
【问题描述】:
 $('#reg_submit').click(function () {
               var reg_email = $('#reg_email').val();


 var errorMessage = '';
 if (reg_email == '') {
 errorMessage = "please enter email";
 $('#msg_regemail').html(errorMessage).show();
} else {
if ((!(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/im.test(reg_email)))) {
errorMessage ="please enter valid email id" ;
$('#msg_regemail').html(errorMessage).show();
} else {
 $('#msg_regemail').html('').hide();
} 
}

我有此代码用于检查空电子邮件字段和无效电子邮件格式。但现在我的要求是验证电子邮件地址,如 gmail.com、yahoo.com。 如果我输入 xyz@xy.com,它应该显示错误消息,如无效电子邮件。所以 jquery 应该只接受 gmail.com 等电子邮件 ID。 任何人都可以建议上述要求的代码。 提前致谢

【问题讨论】:

  • 问了九个问题,没有接受答案。你真的需要解决这个问题。人们将不再关注您的问题,并且您不会奖励帮助您的人,并且您不会通过指出哪个答案对您最有帮助来为 SO 社区做出贡献。

标签: jquery validation email


【解决方案1】:

如果您只是检查简单的电子邮件地址,则可以使用此正则表达式来提取域,然后对照预制列表进行检查。您也可以创建一个非法列表并对其进行检查。

var legalDomains = {
    "-yahoo.com": true,
    "-gmail.com": true,
    "-hotmail.com": true,
    "-msn.com": true
};

var matches = reg_email.match(/@(.*)$/);
if (matches) {
    // matches[1] is the part after the @ sign in the email address
    if (("-" + matches[1]) in legalDomains) {
        // found the domain in the permitted list
    }
}

注意:列表中使用前导“-”以确保我们不会意外匹配 javascript 对象上的任何内置方法名称,例如“keys”或“create”,这会为某些单词提供错误答案。

工作演示:http://jsfiddle.net/jfriend00/rTzUd/

【讨论】:

  • 为什么使用“-”?有什么特别的原因吗?
  • @sabithpocker - 你看到我答案末尾的“注释”了吗?
  • 知道了 :) 否则我们应该在使用 'in' 时使用 hasOwnProperty 对吗?
  • @sabithpocker - 我想你可以单独使用hasOwnProperty()(而不是in)。
  • 哈哈是的,我只是想在“for in”循环中只过滤自己的属性,当我学习hasOwnProperty时的上下文:)
【解决方案2】:

请试试这个:工作版本: http://jsfiddle.net/Uummr/2/show/ 代码 http://jsfiddle.net/Uummr/2/

您只需要一个允许的合法域名来源,其余的将像魅力一样发挥作用。在这种情况下,它不会接受除法律电子邮件之外的任何 otehr 电子邮件,即var emailLegalReg = /^([\w-\.]+@(?!gmail.com)(?!yahoo.com)(?!hotmail.com)(?!aol.com)([\w-]+\.)+[\w-]{2,4})?$/;

阅读这个:(我做了相反的事情)http://www.designchemical.com/blog/index.php/jquery/email-validation-using-jquery/

希望这有助于事业:)

代码

// prepare the form when the DOM is ready
$(document).ready(function() {

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

                $(".error").hide();
                var hasError = false;
                var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
                var emailLegalReg =  /^([\w-\.]+@(?!gmail.com)(?!yahoo.com)(?!hotmail.com)(?!aol.com)([\w-]+\.)+[\w-]{2,4})?$/;

                var emailaddressVal = $("#UserEmail").val();
                if(emailaddressVal == '') {
                    $("#UserEmail").after('<span class="error">Please enter your email address.</span>');
                    hasError = true;
                } else if(!emailReg.test(emailaddressVal)) {    
                    $("#UserEmail").after('<span class="error">Enter a valid email address.</span>');
                    hasError = true;
                } else if(emailLegalReg.test(emailaddressVal)) {    
                    $("#UserEmail").after('<span class="error">No eamil apart from gmail, hotmail or yahoo is allowed.</span>');
                    hasError = true;
                }

                if(hasError == true) { return false; }
                else {
                    $("#UserEmail").after('<span class="error">Email accepted.</span>');
                    return false;
                }
    });    
});

工作图像

【讨论】:

    【解决方案3】:

    一个更复杂的(不是我创作的,但我用这个)

    if(/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email)){
    validated = true;
    }
    

    您是否按照@jfriend 的建议寻找特定的域?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-05
      • 2014-06-12
      • 1970-01-01
      • 2013-11-20
      • 2015-12-19
      • 2012-04-08
      • 1970-01-01
      • 2021-07-03
      相关资源
      最近更新 更多