php中正则表达式的用户名验证

php中正则表达式的用户名验证,php,regex,Php,Regex,我正在尝试使用正则表达式在PHP中验证用户名。但我失败了。我的模式是:/[^a-z0-9]/ 规则: 用户名必须以数字或小写字母开头 用户名支持号码、小写字母和_ 用户名的结尾字符不能为空_ 假设最小字符数为两个(如果少于三个,则永远不允许使用下划线),以下是正确的模式: ^[a-z0-9][a-z0-9_]*[a-z0-9]$ 第一个字符是小写字母或数字(可以有更多,这就是为什么+符号。然后是任意数量(包括零)的字符,包括下划线。最后,至少是一个字母或数字 您可以在此处进行测试: 以下模式

我正在尝试使用正则表达式在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_]{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,则会失败