当用户在我的网站上创建帐户时,我想对服务器进行验证,以使电子邮件不接受所有输入。
我将发送确认,以进行握手验证。
我在寻找简单的东西,而不是最好的东西,但又不是太简单,不能验证任何东西。我不知道限制在哪里,因为任何正则表达式都无法进行正确的验证,因为无法使用正则表达式来进行验证。
我试图限制正则表达式固有的正弦和视觉复杂性,因为在这种情况下,任何正确的用法都可以。
我可以使用什么正则表达式来做到这一点?
当用户在我的网站上创建帐户时,我想对服务器进行验证,以使电子邮件不接受所有输入。
我将发送确认,以进行握手验证。
我在寻找简单的东西,而不是最好的东西,但又不是太简单,不能验证任何东西。我不知道限制在哪里,因为任何正则表达式都无法进行正确的验证,因为无法使用正则表达式来进行验证。
我试图限制正则表达式固有的正弦和视觉复杂性,因为在这种情况下,任何正确的用法都可以。
我可以使用什么正则表达式来做到这一点?
Answers:
^\S+@\S+$
可以编写一个只接受符合标准的电子邮件地址的正则表达式。但是,有些电子邮件地址并不严格遵循标准,但仍然有效。
以下是一些用于基本验证的简单正则表达式:
包含一个@字符:
@
包含@及其后的句点:
@.*?\.
@之前,句号之前和之后至少有一个字符:
.+@.+\..+
在句号之前和之后只有一个@,@之前至少一个字符:
^[^@]+@[^@]+\.[^@]+$
用户AmoebaMan17建议进行此修改以消除空格:
^[^@\s]+@[^@\s]+\.[^@\s]+$
并且仅接受一个期间:
^[^@\s]+@[^@\s\.]+\.[^@\.\s]+$
test@test.com
吗?
[^@\s]+@[^@\s]+\.[^@\s]+
我认为对AmoebaMan17表达式的这种细微调整应该使地址以点开头/结尾停止,并且也应停止多个相邻的点。在消除常见问题的同时,尽量避免使其变得复杂。
(?!.*\.\.)(^[^\.][^@\s]+@[^@\s]+\.[^@\s\.]+$)
它似乎正在工作(但我不是RegEx-pert)。解决了我的问题,即用户从句号结尾的句子结尾复制并粘贴电子邮件地址。
即:这是我的新电子邮件地址tabby@coolforcats.com。
这是符合RFC 2822第3.4.1节的要求...
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
以防万一你好奇。:)