禁止以句点开头的电子邮件地址?

时间:2019-12-30 21:46:06

标签: regex ruby

当前正则表达式(允许使用开始时间段)

我正在尝试更新正则表达式以禁止以句点开头的电子邮件地址(例如.email@example.com)。正则表达式基于Use Regular Expressions to Validate Email Addresses - Salesforce Developers进行了一些调整。

regex = %r{ \A
            (?!.*\.{2})
            [a-z0-9.!#$%&'*+\/=?^_`{|}~-]+
            (?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*
            @
            (?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+
            [a-z0-9]
            (?:[a-z0-9-]*[a-z0-9])?
            \z }ix

新的(?失败)正则表达式尝试(不允许开始时间)

Regular expression for word that not starts with dot之后,我添加了一个锚以忽略句点和逗号(^[^.,])。

regex = %r{ \A
            ^[^.,]
            (?!.*\.{2})
            [a-z0-9.!#$%&'*+\/=?^_`{|}~-]+
            (?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*
            @
            (?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+
            [a-z0-9]
            (?:[a-z0-9-]*[a-z0-9])?
            \z }ix

意外的副作用

但是,我的更改由于不允许以下模式而导致了意外的副作用。

短电子邮件地址:

a@b.com

多个电子邮件地址:

a@b.com; john.doe@test.com
a@b.com;john.doe@test.com
a@b.com, john.doe@test.com
a@b.com,john.doe@test.com
a@b.com john.doe@test.com

如何禁止以句点开头的电子邮件地址,而又不允许短电子邮件地址和多个电子邮件地址?

0 个答案:

没有答案