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
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值