日期:2014-05-17  浏览次数:20548 次

js正则验证字符串长度过大就响应很慢
最近做网站,注册那别人做的。注册要邮箱,验证邮箱在前台做了次正则判断,代码如下:
JScript code
var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
            if (!myreg.test(email)) {
                // $("#tip_email").show(500);
                alert("邮箱格式错误");
                //$("#tip_email").html("邮箱格式错误");
                $('#txtname').focus();
                return false;
            }

这是前台验证邮箱的代码。当文本框输入超过29个字符,就会很慢,再多了就半天没响应。我本来以为是ajax到后台验证,一看是前台,但是也不能这么慢啊。我现在文本框只能限定输入最多28个字符。但是邮箱一般可能会有更长的。怎么是好。

------解决方案--------------------
判断邮箱,试试这个:
/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
------解决方案--------------------
延迟长度,在正则判断其判断其长度
/^(?=\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$).{0,50}$/