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



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

我使用的表达式是(即使是最简单的表达式也尝试了相同的结果):

^(([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);
}

您正在量化量词,如果找不到匹配项,则会导致灾难性的回溯。尤其是像这样的长输入。

请问你为什么不这样做?

<input type="email" />

最新更新