在PHP中使用正则表达式进行用户名验证

时间:2017-07-08 07:51:49

标签: php regex

我正在尝试使用正则表达式验证PHP中的USERNAME。但我失败了。我的模式是:/ [^ a-z0-9 _] /

规则:

  • 用户名必须以小号或小写字母开头
  • 用户名支持号码,小写字母和_
  • 用户名字符的结尾不是_

3 个答案:

答案 0 :(得分:4)

以下模式可行:^[a-z0-9][a-z0-9_]*[a-z0-9]$

  • ^[a-z0-9]:第一个字符可能不是下划线
  • [a-z0-9_]*:所有其他人可能都是......
  • [a-z0-9]$:...除了最后一个不能作为下划线的内容。

答案 1 :(得分:3)

假设最小字符数为2(如果少于3,则永远不允许使用下划线),这是正确的模式:

^[a-z0-9][a-z0-9_]*[a-z0-9]$

第一个字符是小写字母或数字(可能有更多字母,这就是+符号的原因。然后是任何数量(包括零)的字符,包括下划线。最后,在至少一个字母或数字。

你可以在这里测试一下:

https://regex101.com/r/C1zPfu/1

答案 2 :(得分:1)

您不希望两个字母的用户名或具有无限字符的用户名,是吗?如果您需要在您的情况下限制用户名中的字符数,请考虑此解决方案:

/^[a-z0-9][a-z0-9_]{2,28}[a-z0-9]$/

https://www.tinywebhut.com/regex/4

部分[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

https://www.tinywebhut.com/regex/5