Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Js验证挂起在字段上_Javascript_Jquery_Regex_Validation - Fatal编程技术网

Javascript Js验证挂起在字段上

Javascript Js验证挂起在字段上,javascript,jquery,regex,validation,Javascript,Jquery,Regex,Validation,我的文本区有几个验证,其中一个是没有电子邮件验证,对于某些输入,浏览器只是冻结 这是我的验证功能: noEmail = function() { $.validator.addMethod("noEmail", function(value, element) { return this.optional(element) || !(value.match(/((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD

我的文本区有几个验证,其中一个是没有电子邮件验证,对于某些输入,浏览器只是冻结

这是我的验证功能:

noEmail = function() {
    $.validator.addMethod("noEmail", function(value, element) {
        return this.optional(element) || !(value.match(/((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))([\[\{\|\(]?@[\]\}\|\)]?)((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?/i));
  }, emailValidationFailedMessage);
  }
因此,在某些情况下,当浏览器冻结时,我如何排除故障?确定原因


或者更好的问题是,如何确保我的文本字段不包含电子邮件,或者至少以更简单的方式确保我的浏览器不会卡住?

天哪,你的正则表达式有470个字符长。难怪有些浏览器会被它卡住。“你怎么可能理解和保持这一点呢?”@Frédéric Hamidi这是一个好的、正确的观察。在git的一些要点上找到的。我的选择是什么?好吧,使用一个更简单的正则表达式。其中可能有可以分解的部分,但我不是一个足够的正则表达式向导,无法轻松地向您指出它们。@CaioOliveira匹配有效的电子邮件地址很难。对于
foo,您的正则表达式失败+bar@example.com
foo@localhost
foo@bar.co.uk
。这本书不是很有用,但读起来不错。@Gandalfsrowcrow我可以说是谁写的,regex并不精通它。也许是自动的?我可以通过在模式中观察到的几件事来说明这一点:1)在不必要的时候使用
[\[\\\\\\\\\\\\\\\\\(]
-2)到处使用
(或)逃逸,而我们可以只使用字符类
([a-z].\d.-\124\\\\.\ u124\\\\\.\ u124\.-\ u124.\ u00A0-\uD7FF\uFDCF-\uff>)([-\d.~a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])
等等。我的建议是?只要尝试匹配
\S+@\S+
。如果你想认真对待,可以将匹配发送到后端并进行验证