preg_匹配PHP验证用户名

preg_匹配PHP验证用户名,php,regex,validation,preg-match,Php,Regex,Validation,Preg Match,如何使用php验证用户名 我的规则是: 用户名只能包含字母、数字和1下划线 这是我目前的预赛 preg_match('/^[a-zA-Z0-9][_]{1}[a-zA-Z0-9]+$/',$_POST['uname']) 这应该做到: /^[a-zA-Z0-9]*_?[a-zA-Z0-9]*$/ 请记住,单个项目的字符类是冗余的。而只写原子。而{1}是另一个严重冗余的量词 /[_]{1}/ 就跟 /_/ 编辑: 基于新的约束条件和chris的有益评论,这似乎是一个更好的正则表达式: /

如何使用php验证用户名

我的规则是:

用户名只能包含字母、数字和1下划线

这是我目前的预赛

preg_match('/^[a-zA-Z0-9][_]{1}[a-zA-Z0-9]+$/',$_POST['uname'])
这应该做到:

/^[a-zA-Z0-9]*_?[a-zA-Z0-9]*$/
请记住,单个项目的字符类是冗余的。而只写原子。而
{1}
是另一个严重冗余的量词

/[_]{1}/
就跟

/_/

编辑:

基于新的约束条件和chris的有益评论,这似乎是一个更好的正则表达式:

/^[a-zA-Z0-9]+_?[a-zA-Z0-9]+$/D

它匹配至少两个字符的用户名,不以可选下划线结尾或开头,结尾不换行。

在前面的至少两个问题上,您说“谢谢”,但不接受答案。回顾你的其他问题,如果某个答案对你有帮助,请单击该答案旁边的大复选标记。谢谢:D但我还有一个问题,我还需要u不应该是用户名myusername的第一个和最后一个-不允许myusername-不允许allowed@user1033600允许的最小字符数是多少?使用
D
标志,除非您喜欢最后一个字符为换行符的用户名*$/D对不起@chris我不知道这个标志。我更新了答案-谢谢你指出+1. <代码>^[a-zA-Z0-9]+?[a-zA-Z0-9]+$确实有效。但是,更有效的编写方法是:
^[a-zA-Z0-9]+(?:[a-zA-Z0-9]+)?$
如果给定较长的无效字符串,例如:
“123456789001234567890123456789012345678901234567890123456789”