这几天在做项目的用户注册时,想限制用户使用一些比较奇怪的字符作为名字,即使用中文或者英文名字。
查了一些资料,例如:网友挥得更高的百度空间 写下了以下函数。
//验证名字和密码 if (!preg_match("/^([x{4e00}-x{9fa5}]+)$/u", $sname)&&!preg_match("/^[a-z]+$/i", $sname)) {echo "请使用您的真实姓名"; }
在这里使用的是PCRE模式的正则表达式;这里的修正符u,表示模式字符串被当成UTF-8。
(附:关于上面的知识可以参考《POSIX 和 PCRE 标准的正则表达式区别》)
经过测试,基本上,中文以及英文名字都可以匹配。
暂时没发现什么错误。