php - 如何在 Javascript 和 PHP 中验证非英语(UTF-8)编码的电子邮件地址?

标签 php javascript email utf-8 internationalization

我目前正在处理的网站的一部分包含注册过程,用户必须提供他们的电子邮件地址。就在最近,我意识到基于非 ascii 的域是可能的(电子邮件也是如此)。 我的后端是 utf-8 编码的 MySQL,我希望任何用户(具有不同区域设置)都应该能够输入他们的电子邮件,但不知道如何验证这种电子邮件地址。

目前我正在测试 jquery 工具,它可以正确验证英文电子邮件地址,但无法验证非 ascii 电子邮件。我还需要在服务器端用 php 做同样的事情。有没有可以验证这种电子邮件地址的正则表达式?

我已经试过了,但是它在 jquery 工具中失败了(这只是演示的例子,我也不明白)

闪闪发光@闪闪发光.com

还有当他们使用自己的 IME 输入英文电子邮件地址 (jonesmith@somemail.com) 时会发生什么。这可以用我们用于英语邮件验证的当前正则表达式来验证吗?目前我不必担心该电子邮件是否存在。

谢谢

最佳答案

尝试验证电子邮件地址可能不是一个好主意。规范(RFC5321RFC5322)具有如此大的灵 active ,以至于用正则表达式验证它们几乎是不可能的,而用函数验证是一项大量的工作。其结果是大多数电子邮件验证方案最终会拒绝大量有效电子邮件地址,给用户带来很大不便。 (到目前为止,最常见的例子是不允许使用 + 字符。)

用户更有可能(无意或故意)输入错误的电子邮件地址,而不是输入无效的电子邮件地址,因此实际上验证是一项大量工作,收效甚微,如果操作不正确,可能会产生成本。

我建议您只检查客户端上是否存在 @ 字符,然后发送一封确认电子邮件进行验证;这是最实用的验证方法,它也可以确认地址是否正确。

关于php - 如何在 Javascript 和 PHP 中验证非英语(UTF-8)编码的电子邮件地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5219848/

相关文章:

php - 返回数组第一个重复元素的最佳方法

javascript - 使用正则表达式验证用户名

ios - 如何关闭 MFMailComposeViewController?

email - CACert 添加域

php - php 5 与 php 4 的向后兼容性如何?

php - PDOStatement 的 bindValue 仅适用于 "0"的值

.net - 现在没有 Windows 应用程序的范围吗?

Javascript - 如何最小化此代码示例?

Javascript 应用 - React 中 Mixins 的示例

android - 使用内容提供者获取电子邮件