我正在尝试对电子邮件地址输入进行正则表达式测试。这适用于较小的字符串,但是当输入字符串太长时,正则表达式文本只会冻结线程/网页。
我正在使用的表达式(甚至尝试了最简单的结果):
^(([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);
}
答案 0 :(得分:2)
您正在量化量词,如果无法找到匹配,则会导致灾难性的回溯。特别是这样的长输入。
我可以问你为什么不这样做?
<input type="email" />