我正在尝试更新正则表达式以禁止以句点开头的电子邮件地址(例如.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
如何禁止以句点开头的电子邮件地址,而又不允许短电子邮件地址和多个电子邮件地址?