PHP用正则验证用户名

在php中,用正则表达式写一个用户名的验证。
要求:第一个字符为英文,只能用字母、数字、汉字、下划线,总长度限制在4-9位的昵称

<?php
//要求:第一个字符为英文,总长度限制在4-9位,可以带下划线的昵称
$str="a测试12_";
$reg='/^[A-Za-z][A-Za-z0-9_\x{4e00}-\x{9fa5}]{3,8}$/u';
$res=preg_match($reg,$str);
if ($res){
    echo '正确';
}else{
    echo '错误';
}

难点在于[A-Za-z0-9_\x{4e00}-\x{9fa5}] 这一段。

"A-Za-z":验证字母
"0-9":验证数字
"_":下划线
"\x{4e00}-\x{9fa5}":代表php中的汉字正则验证
"/u":代表unicode(utf-8)匹配

在php中,不支持[\u4e00-\u9fa5]匹配汉字,而是用\x表示十六进制数据,然而php中用"[\x4e00-\x9fa5]"的写法也是错的,必须用{}把它包起来才行。此外,由于编码关系,需要用到"/u"声明编码格式。

要求 代码
第一个字符为英文 [A-Za-z]
字母、数字、汉字、下划线 [A-Za-z0-9_\x{4e00}-\x{9fa5}]
总长度限制在4-9位 {3,8}
声明编码格式 /u

猜你喜欢

转载自blog.csdn.net/December_shi/article/details/108041527