如何在PHP中使用regex实现符合指定规则的用户名校验
PHP 用户名合法性校验正则方案
你目前写的/^[a-z0-9]{6,25}\S*$/不符合需求,它仅限制了前6-25位为小写字母/数字,后续可以跟任意非空字符,没有限制特殊字符范围、连续特殊字符、总长度等规则。
符合要求的正则表达式
/^[a-z0-9](?:[._-]?[a-z0-9]){5,24}$/
规则匹配说明
- 不得包含空格:正则仅匹配小写字母、数字、
.、-、_四类允许的字符,天然排除空格 - 仅允许使用小写字母和数字,除
.、-、_外无其他特殊字符:正则内仅配置了上述允许的字符范围,不会匹配其他字符 - 不可连续出现2个及以上特殊字符:分组
(?:[._-]?[a-z0-9])要求特殊字符最多只能出现1次,且后面必须跟小写字母/数字,从规则上杜绝连续特殊字符的可能 - 不以特殊字符开头:开头
^[a-z0-9]强制首字符必须是小写字母或者数字 - 长度6-25位:首字符占1位,后续分组重复5到24次,总长度刚好落在6~25的区间内
PHP 使用示例
$username = 'test.user_01'; if (preg_match('/^[a-z0-9](?:[._-]?[a-z0-9]){5,24}$/', $username)) { echo "用户名合法"; } else { echo "用户名不合法"; }
内容的提问来源于stack exchange,提问作者Tanuj1899
相关产品推荐
相关产品推荐

