我有一个符合我所有规则的正则表达式,除了它不能验证其域中少于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
答案 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})$
我们修改后的表达式是: