php中正则表达式的用户名验证
我正在尝试使用正则表达式在PHP中验证用户名。但我失败了。我的模式是:/[^a-z0-9]/ 规则:php中正则表达式的用户名验证,php,regex,Php,Regex,我正在尝试使用正则表达式在PHP中验证用户名。但我失败了。我的模式是:/[^a-z0-9]/ 规则: 用户名必须以数字或小写字母开头 用户名支持号码、小写字母和_ 用户名的结尾字符不能为空_ 假设最小字符数为两个(如果少于三个,则永远不允许使用下划线),以下是正确的模式: ^[a-z0-9][a-z0-9_]*[a-z0-9]$ 第一个字符是小写字母或数字(可以有更多,这就是为什么+符号。然后是任意数量(包括零)的字符,包括下划线。最后,至少是一个字母或数字 您可以在此处进行测试: 以下模式
- 用户名必须以数字或小写字母开头
- 用户名支持号码、小写字母和_
- 用户名的结尾字符不能为空_
^[a-z0-9][a-z0-9_]*[a-z0-9]$
第一个字符是小写字母或数字(可以有更多,这就是为什么+
符号。然后是任意数量(包括零)的字符,包括下划线。最后,至少是一个字母或数字
您可以在此处进行测试:
以下模式将起作用:
^[a-z0-9][a-z0-9.]*[a-z0-9]$
:第一个字符不能是下划线^[a-z0-9]
:所有其他可能是任何东西[a-z0-9.]*
:…最后一个不能是下划线的除外[a-z0-9]$
你不想要两个字母或用户名都有无限字符的用户名,对吗?如果你需要限制你的用户名中的字符数,请考虑这个解决方案:
/^[a-z0-9][a-z0-9_]{2,28}[a-z0-9]$/
部分[a-z0-9]
完全匹配一个只能是小写字母或数字的字符。中间部分[a-z0-9{2,28}
匹配任何最多2或28个字符(包括下划线)的小写字母或数字。最后部分[a-z0-9]
完全匹配一个只能是小写字母或数字的字符。因此,此正则表达式匹配的用户名至少有4个字符,最多有30个字符。如果您改变主意,希望同时包含小写和大写字母,则必须添加修饰符i
:
/^[a-z0-9][a-z0-9_]{2,28}[a-z0-9]$/i
该模式将简单地匹配任何不是小写字母、数字或下划线的字符。建议您检查。您可以在那里测试您的正则表达式并了解不同的规则。最小字符数是多少?您不需要将
+
用于第一个和最后一个字符。中间部分介绍了这一点已经有了。@colburton谢谢,是的,两个加号都不是必需的,我纠正了这一点。我使用加号时要记住“至少有一个”:-@BipulRoy这将匹配a\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu0
。此外,正则表达式将miminum字符串长度设置为2个字符。根据OP的设计规则,这样的用户名是有效的。@WiktorStribiżew我只需要有效的用户名。当用户超过最大字符数限制时,我使用php的strlen并向他们发出警报。如果字符数小于2,则会失败