首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用jQuery验证电子邮件地址?

如何使用jQuery验证电子邮件地址?
EN

Stack Overflow用户
提问于 2016-12-13 08:34:47
回答 4查看 79关注 0票数 -1

在我的html中有这样的输入:

代码语言:javascript
复制
<input class"email_address_input" required type="email" id="emailAddress" />

我正在尝试使用regex进行验证:

代码语言:javascript
复制
function ContactUs($el){
    this.$el = $el;
    this.$emailAddress = this.$el.find('#emailAddress');
    this.emailValid();
    return this;
}


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

ContactUs.prototype.emailValid = function($el) {
        var THIS = this;
        if (THIS.$emailAddress.val().length) {
            THIS.isEmail(THIS.$emailAddress);
        } 
  return THIS;
}

我得到的所有是false,即使我把一个有效的电子邮件格式。

怎么了?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-12-13 08:40:30

您可以稍微更改一下您的正则表达式:

代码语言:javascript
复制
function isValidEmailAddress(emailAddress) {
    var pattern = /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([ \t]*\r\n)?[ \t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i;
    return pattern.test(emailAddress);
};

function validateEmail() {
  var email = document.getElementById('emailAddress').value;
  console.log(isValidEmailAddress(email));
}
代码语言:javascript
复制
<input class"email_address_input" required type="email" id="emailAddress" />

<input type="button" onclick="validateEmail()" value="Validate" />

票数 0
EN

Stack Overflow用户

发布于 2016-12-13 08:43:25

对错误之处的评论

代码语言:javascript
复制
ContactUs.prototype.emailValid = function($el) {
        var THIS = this;
        if (!THIS.$emailAddress.val().length) {  //This is checking it when there is no length
            THIS.isEmail(THIS.$emailAddress);  //here you are passing  an element, not the value
        } 
  return THIS;  //seems strange you are passing the object and not a false Boolean
}

它应该是

代码语言:javascript
复制
ContactUs.prototype.emailValid = function($el) {
  if (this.$emailAddress.val().length) {
    return this.isEmail(this.$emailAddress.val());
  } 
  return false;
}
票数 4
EN

Stack Overflow用户

发布于 2016-12-13 08:40:22

而不是

代码语言:javascript
复制
THIS.isEmail(THIS.$emailAddress);

试一试

代码语言:javascript
复制
 return THIS.isEmail(THIS.$emailAddress);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41111948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档