Wri*_*der 11 php regex unicode
我正在制作一些必须完全unicode的网站.数据库等正在工作,我只有一些小的逻辑错误.如果字段有效,我用ajax测试我的注册表单,在电子邮件字段中我用正则表达式检查.
但是,如果用户拥有像日本人@日人日本人.com这样的电子邮件地址,那么它就不会出现问题.
电子邮件地址总是这样吗?(az AZ 0-9)@(az AZ 0-9).(az AZ 0-9)
根据RFC 5322("Internet消息格式"),第3.4.1节("Addr-Spec规范"),您不能使用非US-ASCII字符,例如您列出的字符.但是,...等人物
! # $ % & ' * + - / = ? ^ _ { | } ~
Run Code Online (Sandbox Code Playgroud)
......只要连续只有一个,就是合法的,以及句号/句号.
有关更多信息,请参阅上面的RFC以及维基百科关于电子邮件地址的文章,特别是"语法"部分.
UPDATE
还有一个较新的,尽管是实验性的RFC 5336(现已被RFC6531废弃),它处理包含UTF-8字符等的现在合法的国际域名.
当您尝试匹配/验证正则表达式上的电子邮件地址时,您必须非常小心.在某些情况下,您拒绝有效的电子邮件地址.基本上它:
给我看一个正则表达式,我给你看一个不匹配的电子邮件.
因此,如果我检查电子邮件地址,我会使用一个非常简单的正则表达式.+@.+(\..+)*
(用户部分任何东西,主机部分至少有一个点).任何其他因素都会导致误报和漏报.
最好不要匹配电子邮件地址(只检查像"@"这样的琐碎的东西),而是发送选择加入电子邮件.