如何使用jquery验证验证电子邮件?

时间:2016-06-03 05:02:33

标签: jquery jquery-validate

我的脚本javascript是这样的:

email: {
         required: true,
         email: true          
},

在textfield电子邮件中,我写道:chelsea@gmail没有.com,它有效。

解决我问题的任何解决方案?

谢谢

4 个答案:

答案 0 :(得分:5)

编辑答案:

要验证电子邮件地址是否为name@domain.tld格式,您可以使用以下正则表达式:

var emailExp = new RegExp(/^\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i);

此正则表达式仅接受包含@ -sign,点和2-4个字符长TLD的电子邮件地址。

您可以使用上述正则表达式验证给定的电子邮件地址,如下所示:

function validate_email (email) {
   /* Define the recommended regular expression. */
   var emailExp = new RegExp(/^\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i);

   /* Test the email given against the expression and return the result. */
   return emailExp.test(email);
}

jQuery Validator:

jQuery Validator不支持使用正则表达式,而是在内部使用默认的HTML5电子邮件正则表达式,因此您必须首先为验证器创建一个新方法:

$.validator.addMethod(
    /* The value you can use inside the email object in the validator. */
    "regex",

    /* The function that tests a given string against a given regEx. */
    function(value, element, regexp)  {
        /* Check if the value is truthy (avoid null.constructor) & if it's not a RegEx. */
        if (regex && regexp.constructor != RegExp) {
           /* Create a new regular expression using the regex argument. */
           regexp = new RegExp(regexp);
        }

        /* Check whether the argument is global and, if so set its last index to 0. */
        else if (regexp.global) regexp.lastIndex = 0;

        /* Return whether the element is optional or the result of the validation. */
        return this.optional(element) || regexp.test(value);
    }
);

现在为验证器创建了支持正则表达式验证的方法,您可以使用jQuery.validate,如下所示:

$('#element_id').validate({
    email: {
        required: true,
        email: true,
        regex: /^\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i
    }
});

原始答案(改进)

要过滤电子邮件地址,只接受name@domain.tld之类的格式,请使用此正则表达式:

var emailExp = new RegExp(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i);

此正则表达式过滤掉可能输入的任何“垃圾”,并要求存在@ -sign,a和2-4个字符长的TLD。如果给定电子邮件地址的子字符串与其匹配,则返回子字符串,否则返回false

您可以使用上述正则表达式过滤给定的电子邮件地址,如下所示:

function filter_email (email) {
   var
      /* Define the recommended regular expression. */
      emailExp = new RegExp(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i),

      /* Use 'match' to filter the email address given and cache the result. */
      filtered = email.match(emailExp);

   /* Return the filtered value or false. */
   return filtered ? filtered[0] : false;
}

说明:

  • 一年多前回答OP的问题时,我误认为他的电子邮件验证意图是尝试过滤给定的字符串,只保留一个电子邮件地址的子字符串。

  • 此答案认为缺少TLD的地址无效,即使它们在OP的请求下在现实世界中完全有效。

答案 1 :(得分:3)

$(function() {
// Setup form validation on the #register-form element
$("#login-form").validate({
    // Specify the validation rules
    rules: {
        email: {
            required: true,
            email: true
        }
    },
    // Specify the validation error messages
    messages: {         
        email: "Please enter a valid email address"
    },
    submitHandler: function(form) {
        form.submit();
    }
});   });

我希望它会有所帮助

Microsoft's Query Table documentation

答案 2 :(得分:2)

试试这个

function isEmail(email) {
  var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  return regex.test(email);
}

答案 3 :(得分:0)

print -l <->[^-]*.jpg