电子邮件中的验证问题,javascript

时间:2015-07-14 06:29:30

标签: 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])?$)

我在正则表达式的开头指定了最小和最大长度

2 个答案:

答案 0 :(得分:0)

您似乎在正则表达式中使用了lookarounds。据我所知,javascript不允许/支持其中一些,因此解析器无法识别。

您可能还想缩短正则表达式。我认为电子邮件正则表达式可能会更短,例如:

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

答案 1 :(得分:0)

似乎定位最大限制的方式存在问题:

(^(?!.*__.*)[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])?$)

演示:https://regex101.com/r/dG7vZ8/1

这里允许的最小长度是5个字符

你可以看到{4,253}写的正则表达式的后半部分与@符号之前的一个字符匹配