3 回答
TA贡献2021条经验 获得超8个赞
你看过PHP的filter_函数了吗?他们并不完美,但根据我的经验他们做得相当不错。
用法示例(返回布尔值):
filter_var($someEmail, FILTER_VALIDATE_EMAIL);
TA贡献1873条经验 获得超9个赞
AFAIK,验证电子邮件的唯一好方法是发送电子邮件,看看用户是否使用此电子邮件中的链接返回该站点。这就是许多网站所做的事情。
当你指出与着名的猛犸象正则表达式的链接时,验证所有形式的电子邮件地址很难,几乎不可能。这样做很容易做错,即使对于琐碎的电子邮件也是如此(我发现有太多网站拒绝在电子邮件地址中使用大写字母!而且大多数旧的正则表达式拒绝超过4个字母的TLD!)。
AFAIK,“Jean-Luc B. O'Grady”@ example.com和e = mc ^ 2 @ [82.128.45.117]都是有效地址......而I-Made-It-Up @ Absurd-Domain-Name。信息可能无效。
所以不知何故,我只会检查我们有什么东西,一个独特的@,别的东西,并继续它:它会捕获大多数用户错误(如空字段或用户名而不是电子邮件地址)。
如果用户想要提供虚假地址,那么它只会给出随机看起来正确的内容(see@on.tv或bill.gates@microsoft.com)。并且没有验证器会捕获拼写错误(jhon.b@example.com而不是john.b@example.com)。
如果真的想要针对完整的RFC验证电子邮件,我建议使用正则表达式来拆分@,然后单独检查本地名称和域名。单独的本地名称的情况以“从其他情况开始等等。以[从其他情况开始]分开的域名案例等。在较小的特定域中拆分问题,并且仅在明确定义的简单案例中使用正则表达式。
此建议可以适用于许多正则表达式用途,当然......
- 3 回答
- 0 关注
- 454 浏览
添加回答
举报