什么是最简单的正则expression式来validation电子邮件不盲目接受他们?
当用户在我的网站上创build一个帐户时,我想对电子邮件进行服务器validation,以便不接受每个input。
我会发送一个确认,以一种握手validation的方式 。
我正在寻找一些简单的,不是最好的 ,但不是太简单,不validation任何东西。 我不知道限制必须在哪里,因为任何正则expression式不会做正确的validation,因为不可能用正则expression式来做。
我试图限制正则expression式固有的sintax和视觉复杂性,因为在这种情况下任何都是正确的。
我可以用什么正则expression式来做到这一点?
^\S+@\S+$
可以编写一个只接受遵循标准的电子邮件地址的正则expression式。 但是,有一些电子邮件地址不严格按照标准,但仍然工作。
这里有一些简单的基本validation正则expression式:
包含@字符:
@
包含@和一段时间之后的某个时期:
@.*?\.
在@之前和之后至less有一个字符:
.+@.+\..+
在@之前和之后只有一个@,@之前的至less一个字符:
^[^@]+@[^@]+\.[^@]+$
用户AmoebaMan17build议这种修改来消除空白:
^[^@\s]+@[^@\s]+\.[^@\s]+$
拿你的select。
这是一个符合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])+)\])
以防万一,你好奇。 🙂
我觉得AmoebaMan17对这个表情的小小的改动应该是停止一个点的开始/结束,也会停止多个点的相邻。 尽量不要让它变得复杂,同时消除一个共同的问题。
(?!.*\.\.)(^[^\.][^@\s]+@[^@\s]+\.[^@\s\.]+$)
它似乎工作(但我不是RegEx-pert)。 修复了我的问题,用户在句子结尾处复制并粘贴电子邮件地址。
即:这是我的新电子邮件地址tabby@coolforcats.com。
^ [A-ZA-Z0-9 _ + – ] + @ [A-ZA-Z0-9 – ] + [A-ZA-Z0-9 – ] + $
- 只有1个 @
- 几个域和子域
“^ \ W [^ @] * @ \ W [^ @。] +。\ W [^。] {2,4} $”。 不允许超过一个@或期限,到目前为止效果很好。
另外,要testing不同的正则expression式,请从http://www.ultrapico.com/下载Expresso。; 这真的帮了我。