我的email正则表达式为:^([a-z0-9A-Z]+[-|\\._]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$在输入的字符串比较短的时候,验证没有问题。
但是在输入字符较长,并且不符合email规则的时候,才会出现标题中的问题。
如果输入过长,但是符合这个email规则,也不会有这个问题!那位高手出出马,提供一些意见!大家都有分!!!!!!
但是在输入字符较长,并且不符合email规则的时候,才会出现标题中的问题。
如果输入过长,但是符合这个email规则,也不会有这个问题!那位高手出出马,提供一些意见!大家都有分!!!!!!
解决问题者,我再单独追加50分。
w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
如果是e-mail 应该用email类型去校验,
你在后面再加一个string的类型去校验一个长度就可以了
function checkEmail(emailStr) {
if (emailStr.length == 0) {
return true;
}
var emailPat = /^(.+)@(.+)$/;
var specialChars = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
var validChars = "[^\\s" + specialChars + "]";
var quotedUser = "(\"[^\"]*\")";
var ipDomainPat = /^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
var atom = validChars + "+";
var word = "(" + atom + "|" + quotedUser + ")";
var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat = new RegExp("^" + atom + "(\\." + atom + ")*$");
var matchArray = emailStr.match(emailPat);
if (matchArray == null) {
return false;
}
var user = matchArray[1];
var domain = matchArray[2];
if (user.match(userPat) == null) {
return false;
}
var IPArray = domain.match(ipDomainPat);
if (IPArray != null) {
for (var i = 1; i <= 4; i++) {
if (IPArray[i] > 255) {
return false;
}
}
return true;
}
var domainArray = domain.match(domainPat);
if (domainArray == null) {
return false;
}
var atomPat = new RegExp(atom, "g");
var domArr = domain.match(atomPat);
var len = domArr.length;
if ((domArr[domArr.length - 1].length < 2) || (domArr[domArr.length - 1].length > 3)) {
return false;
}
if (len < 2) {
return false;
}
return true;
}
返回true 正确,false 错误
应该不用怀疑,这是struts 的email验证规则
上面的正则表达式中刚好有这种情况出现,所以以后用到括号()的时候一定要注意。希望大家也能够提高警惕!最后感谢huqilong,wangxf_8341提供了可以借鉴的方法!