【发布时间】:2016-08-10 22:44:17
【问题描述】:
我正在尝试修改现有的电子邮件正则表达式以允许字符之间有一个连字符,就像点分隔符一样。
^([\w]+(?:\.[\w]+)*(?:\-[\w]+)*){1,64}@((?:[\w]+\.)*\w[\w]{0,64})\.([a-z]{2,7})$
我的顺序有问题:如果我先使用连字符然后使用点,正则表达式会忽略点之前字符左侧的所有内容:
my-cool.email@domain.com -> my-cool.email@domain.com(不要介意空格)。
前两组的最大长度限制为 64,但它不起作用,当我输入超过 64 个字符时,它通过了正则表达式,并且有效。第三组最大长度为 7,如果超过则不会验证。
你可以举个例子:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aa是个好结果
和
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aa 是一个糟糕的结果。
第一个示例在@ 前后有64 个as,第二个示例有65 个as
https://regex101.com/r/yO1xH7/3
我也想在@ 之后做同样的事情,但它比我想象的要复杂。
有什么建议吗?谢谢。
【问题讨论】:
标签: regex validation match email-validation regex-lookarounds