RegEx用于验证具有单字母域的电子邮件

时间:2019-05-28 19:50:41

标签: regex email

我有一个符合我所有规则的正则表达式,除了它不能验证其域中少于3个字符的电子邮件地址外:

^(?=(.{1,64}@.{1,255}))([-+%_a-zA-Z0-9]{1,64}(\.[-+%_a-zA-Z0-9][^.]{0,}){0,})@[^-\.@#!$&^*~`={}|'"?]([a-zA-Z0-9_]{1,63}(\.[a-zA-Z0-9-]{0,}){0,}[^.](?!.web)(\.[a-zA-Z]{2,6}){1,4})$

例如,它将sample@q.com和sample@me.com视为无效电子邮件

正则表达式可以在这里找到 https://regex101.com/r/XcXIaL/1

谁能建议对此现有正则表达式进行修改

它应该接受

sample@q.com
sample@me.com
sample@mes.com

1 个答案:

答案 0 :(得分:0)

在这里,我们只需将{1,63}的边界减小为{0,63},并删除以下不必要的字母:

[^-\.@#!$&^*~`={}|'"?]

与此相关的代码的关键部分是:

[^-\.@#!$&^*~`={}|'"?]([a-zA-Z0-9_]{1,63}(\.[a-zA-Z0-9-]{0,}){0,}[^.](?!.web)

更改为:

([a-zA-Z0-9_]{1,63}(\.[a-zA-Z0-9-]{0,}){0,}[^.](?!.web)

,最后的代码是:

^(?=(.{1,64}@.{1,255}))([-+%_a-zA-Z0-9]{1,64}(\.[-+%_a-zA-Z0-9][^.]{0,}){0,})@([a-zA-Z0-9_]{0,63}(\.[a-zA-Z0-9-]{0,}){0,}[^.](?!.web)(\.[a-zA-Z]{2,6}){1,4})$

DEMO

我们修改后的表达式是:

enter image description here