所以即时通讯继续我的PHP旅程。现在创建注册表单并验证用户请求的用户名。这是我到目前为止:根据各种标准验证用户名preg_match
if (preg_match("([a-z 0-9](?=.{3})(?!.{10}))", $user_Name))
我用“RegExr”来创建这个匹配,但它似乎并没有工作。增加了一个大写字母,它仍然说,这是有效的
正想为:从0
- 号 - 9
- 没有大写字母在6所有
- 分钟
- 没有特殊符号字符
- 最多10个字符
所以即时通讯继续我的PHP旅程。现在创建注册表单并验证用户请求的用户名。这是我到目前为止:根据各种标准验证用户名preg_match
if (preg_match("([a-z 0-9](?=.{3})(?!.{10}))", $user_Name))
我用“RegExr”来创建这个匹配,但它似乎并没有工作。增加了一个大写字母,它仍然说,这是有效的
正想为:从0
Accordin克你的规则,这应该工作:
if (preg_match('/^[a-z0-9]{6,10}$/', $user_name))
感谢尼克这帮了我很多 –
没问题,你可以标记它是正确的答案,如果它帮助。 –
经过大约3个小时的研究和故障排除我找到了正确的解决方案。原来,顺序是非常重要的:(?= {5})
< ===字符串必须是5个或更多
< ===字符串必须是({11}?!)。不超过10个字符
^[AZ 0-9] + $ < ===匹配以唯一的共同的字母和数字强制用户具有6之间的用户名长度的任何字符串从0 -9
if (!preg_match('/(?=.{5})(?!.{11})^[a-z 0 -9]+$/', $user_Name)) {
echo 'username is not valid</br>';
echo $user_Name;
}
else {
echo 'username is valid</br>';
echo $user_Name;
}
我已经回答了你的问题。你现在所做的只是错误的。 '(?=。{5})'表示您之前可以有5个任意字符,因此#####是有效的用户名。并且'[a-z 0 -9]'应该是'[a-z0-9]',否则允许空格。我甚至认为这将意味着a-z,空格,连字符和9. –
@NicholasRuunu是对的,使用他的模式。你的模式是不正确的,如果你公开测试它,你会发现这一点。 – vascowhite
我现在正在测试它,并出于一些奇怪的原因:/ ...感叹我很困惑 –
和10个字符是可怕的。这种长度限制有没有真正的原因? – Daniil
我选择使用10长度最大值,因为我想创建更清洁更专业的用户名...你建议我改变这个吗? –
很多用户使用他们的第一个姓氏作为用户名(就像我一样),而对于像我这样的人来说,这是非常棒的。什么是'专业'关于限制用户名为10个符号? – Daniil