在我的html中有这样的输入:
<input class"email_address_input" required type="email" id="emailAddress" />
我正在尝试使用regex进行验证:
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
,即使我把一个有效的电子邮件格式。
怎么了?
发布于 2016-12-13 08:40:30
您可以稍微更改一下您的正则表达式:
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));
}
<input class"email_address_input" required type="email" id="emailAddress" />
<input type="button" onclick="validateEmail()" value="Validate" />
发布于 2016-12-13 08:43:25
对错误之处的评论
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
}
它应该是
ContactUs.prototype.emailValid = function($el) {
if (this.$emailAddress.val().length) {
return this.isEmail(this.$emailAddress.val());
}
return false;
}
发布于 2016-12-13 08:40:22
而不是
THIS.isEmail(THIS.$emailAddress);
试一试
return THIS.isEmail(THIS.$emailAddress);
https://stackoverflow.com/questions/41111948
复制相似问题