如何使用正则表达式验证用户名

How to validate username with regular expression

我想在注册前检查用户名验证,但这有点复杂,我尝试了太多变体但我做不到。

例如;

有效:

username
username1
username23
username456
7username
89username
123username
user_name
user_name1
1user_name2
123user_name
1u2s3er
4u5s6er

无效:

_username <-- start with underscore
username_ <-- end with underscore
_username_ <-- contains underscore more than 1, start and end with underscore
user__name <-- contains underscore more than 1
user_na_me <-- contains underscore more than 1
username1000 <-- contains number more than 3
user01name23 <-- contains number more than 3
1u2s3e4r <-- contains number more than 3

此正则表达式规则适用于我的前三个条件,但我需要为数字和下划线添加限制。

^(?=.{6,20}$)(?![_])[a-zA-Z0-9çÇ_]+(?<![_])$

谢谢。

一个正则表达式无法满足您的要求,但可以通过明智地应用多个正则表达式来满足它们通过程序语句中的适当条件逻辑组合在一起。

例如:

  • 首先,满足要点#1 和#2。
  • 现在,并没有特定的顺序,编写正则表达式来检查(一次一个......)剩下的三个项目符号中的每一个,所有这些都假设前两个已经得到满足。

将所有这些封装在一个漂亮、整洁的程序函数中。 . .

这个正则表达式可以完成这项工作。 (?!^([^0-9]*[0-9]){4,}[^0-9]*$) 如果超过 4 个丢弃,则计算正则表达式中的数字,如果超过 1 个丢弃,(?!^([^_]*_){2,}[^_]*$) 计算下划线。

^(?!^([^0-9]*[0-9]){4,}[^0-9]*$)(?!^([^_]*_){2,}[^_]*$)(?=.{6,20}$)(?![_])[a-zA-Z0-9çÇ_]+(?<![_])$

我解决了,谢谢。

解决方案;

^(?!(.*[_].*){2,}$)(?!(.*[0-9].*){4,}$)(?=.{6,20}$)(?![_])[a-zA-Z0-9çÇ_]+(?<![_])$