我知道gmail允许用户在@符号之前的电子邮件地址中插入他/她想要的多个句点.Gmail还允许用户附加如下电子邮件地址:userName+anyStringHere@gmail.com.所有这些"不同"的电子邮件地址基本上都是相同的地址.(链接到描述这些"功能"的谷歌博客)
我想阻止用户使用基本相同的电子邮件地址创建多个帐户.我决定将电子邮件地址存储在我的数据库中,包括那些句号和随后的任何内容,包括+唱片,但现在我想知道:忽略电子邮件提供商主要关注的@符号前面的句点是否是标准?
这实际上是特定于gmail,但这也适用于域的谷歌应用程序,所以你只能为@ gmail.com这样做
我不会这样做,这只是疏远你的诚实用户,而不是阻止任何人决定创建多个帐户.
在过去的几天里,我遇到了同样的问题.在网上研究并检查了一些事情后,我发现:
DOTS MATTER IN:Microsoft Outlook,Yahoo Mail,Apple iCloud ID
点不重要:Gmail,Facebook ID
禁止严厉禁止:推特
资料来源:关于Slate的文章
我得出结论,大多数用户使用微软,谷歌或雅虎提供的服务.所以我可以像这样使用特定于应用程序的正则表达式.
var eml_exp = /^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@(gmail.com)$/i; if(eml_exp.test("email@addrss")) //if it's a gmail address, then remove periods from local part and also anything // after `+` sign . Then compare the address in your existing user table, // if you find it unique or unused then let the user to register.
您也可以阅读其他已知服务的手册并根据它们实施.
"不要忘记开源你的工作:p"
更新
根据这个SO问题在电子邮件中添加+文本@之前,您可以阻止使用+
符号来解决您的整个问题,我的问题将得到解决.