Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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/4/regex/17.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最小长度的验证问题_Javascript_Regex - Fatal编程技术网

电子邮件中javascript最小长度的验证问题

电子邮件中javascript最小长度的验证问题,javascript,regex,Javascript,Regex,我使用下面的正则表达式来验证电子邮件及其在大多数情况下的正常工作。但是,即使我将电子邮件的最小长度指定为5,它也接受2作为最小长度。那么,我应该在哪里更改它以接受最小长度为5个字符 (?=^.{5,254}$)(^(?!.*__.*)[a-z0-9]+(_?)*[a-z0-9]+(?:\\.[a-z0-9!#$%&*+/=?^`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9]*[a-z0-9])?$)

我使用下面的正则表达式来验证电子邮件及其在大多数情况下的正常工作。但是,即使我将电子邮件的最小长度指定为5,它也接受2作为最小长度。那么,我应该在哪里更改它以接受最小长度为5个字符

(?=^.{5,254}$)(^(?!.*__.*)[a-z0-9]+(_?)*[a-z0-9]+(?:\\.[a-z0-9!#$%&*+/=?^`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9]*[a-z0-9])?$)

我在正则表达式的开头指定了最小和最大长度,您似乎在正则表达式中使用了lookarounds。据我所知,其中一些是javascript不允许/不支持的,因此解析器无法识别

您可能还希望缩短正则表达式。我认为电子邮件regex可以短得多,比如:


[a-z0-9!#$%&*+/=?^
{124;}-.]+@[a-z0-9!#$%&*+/=?^
{124;}-.]+

您确定最小-最大限值的方式似乎存在问题:

(^(?!.*__.*)[a-z0-9]{4,253}(_?)[a-z0-9]+(?:\.[a-z0-9!#$%&*+\/=?^`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9]*[a-z0-9])?$)
此处演示:

此处允许的最小长度为5个字符


您可以看到,
{4253}
编写为正则表达式的后半部分总是在@symbol之前匹配一个字符

我认为没有人会调试这个正则表达式。有更简单的方法来测试长度是否足够大。像字符串。长度。。。。通常,将验证正则表达式分成更小的组(一个做一件事)也是一个好主意。更易于维护和调试。不要使用正则表达式验证电子邮件。执行一些基本测试(它是否有一个
@
符号,后跟一些字符和一个点,然后还有更多字符?)然后向他们发送一封验证电子邮件,这就是使用电子邮件的好处。这是一些严重混乱的正则表达式。它是从哪里来的?如果你想使用regex验证电子邮件,网上有成千上万个经过良好测试的例子。没有必要重新发明轮子。