我的email正则表达式为:^([a-z0-9A-Z]+[-|\\._]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$在输入的字符串比较短的时候,验证没有问题。
但是在输入字符较长,并且不符合email规则的时候,才会出现标题中的问题。
如果输入过长,但是符合这个email规则,也不会有这个问题!那位高手出出马,提供一些意见!大家都有分!!!!!!

解决方案 »

  1.   

    顺便说一下,我的提交方式是POST的,不过应该和提交方式没什么关系!
    解决问题者,我再单独追加50分。
      

  2.   

    用JavaScript写小程序做限制即可
      

  3.   

    我觉的很简单啊,再你用正则判断之前,先判断length如果length超了直接return ,下面就不判断了
      

  4.   

    解决方法:一:使用下面的这个表达式:
    w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
      

  5.   

    不知道你用的是不是框架,
    如果是e-mail 应该用email类型去校验,
    你在后面再加一个string的类型去校验一个长度就可以了
      

  6.   

    提供一个完整的email验证规则
    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验证规则
      

  7.   

    找了很多网站,还有验证了好多次,终于发现原因:能匹配空字符串的子匹配不要循环无限次。如果括号内的子表达式中的每一部分都可以匹配 0 次,而这个括号整体又可以匹配无限次,匹配过程中可能死循环。虽然现在有些正则表达式引擎已经通过办法避免了这种情况出现死循环了,比如 .NET 的正则表达式,但是我们仍然应该尽量避免出现这种情况。如果我们在写表达式时遇到了死循环,也可以从这一点入手。
    上面的正则表达式中刚好有这种情况出现,所以以后用到括号()的时候一定要注意。希望大家也能够提高警惕!最后感谢huqilong,wangxf_8341提供了可以借鉴的方法!
      

  8.   

    我在Java中试试好像没有出现这种问题,你这个是JavaScript中的?
      

  9.   

    java中也一样的,我试了一个不匹配又很长的字符串,就出现死循环的状态了.