我正在尝试使用正则表达式验证PHP中的USERNAME。但我失败了。我的模式是:/ [^ a-z0-9 _] /
规则:
答案 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]$
第一个字符是小写字母或数字(可能有更多字母,这就是+
符号的原因。然后是任何数量(包括零)的字符,包括下划线。最后,在至少一个字母或数字。
你可以在这里测试一下:
答案 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