>我正在尝试对电子邮件地址输入进行正则表达式测试。这适用于较小的字符串,但是当输入字符串太长时,正则表达式文本只会冻结线程/网页。
我使用的表达式是(即使是最简单的表达式也尝试了相同的结果):
^(([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" />