Javascript正则表达式检查冻结网页

时间:2014-02-27 09:40:51

标签: javascript regex

我正在尝试对电子邮件地址输入进行正则表达式测试。这适用于较小的字符串,但是当输入字符串太长时,正则表达式文本只会冻结线程/网页。

我正在使用的表达式(甚至尝试了最简单的结果):

^(([a-zA-Z0-9ÆØÅÄÖæøåäö]+)([\._\-\+]?[a-zA-Z0-9]+)*)@((\[[0-9]{1,3}\.[0-9]{1,3\.[0-9]    {1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$

输入如下:

rjkfonsdjvcnkdcmklsdncjsdkcdsamcjbsdjcmsdcnsdjcvksadcnsdjbc

在它破裂的时候。

我用来验证的Javascript代码:

function (regex, val) {
    var rx = new RegExp(regex);
    return rx.test(val);
}

1 个答案:

答案 0 :(得分:2)

您正在量化量词,如果无法找到匹配,则会导致灾难性的回溯。特别是这样的长输入。

我可以问你为什么不这样做?

<input type="email" />