用户名的正则表达式

Ben*_*min 5 c# regex

我试图弄清楚如何在执行以下要求时设置正则表达式.

  • 必须至少包含两个字母a-zA-Z
  • 在第一次检查后,任何地方都必须只包含一个下划线或短划线,短划线/下划线不能作为第一步应用的相同规则
  • 必须是字母数字字符.

基本上一个很好的例子

可接受的用户名

  • myusername_09
  • 用户名-09
  • BW-09

不可接受的用户名

  • bw 09
  • BW - 09
  • bw_-09
  • username__09

如果有任何帮助可以欣赏,这就是我所拥有的,但它并不像我想要的那样为我工作.

^(?=[A-Za-z0-9])(?!.*[_-]{2})[A-Za-z0-9_-]+$
Run Code Online (Sandbox Code Playgroud)

And*_*ber 7

如果我正确理解您的要求,您只需要验证用户名是否正确?如果是这样,我会使用这个正则表达式:

^[A-Za-z]{2,}[_-]?[A-Za-z0-9]{2,}$
Run Code Online (Sandbox Code Playgroud)

你没有说明破折号或下划线后需要多少个字符; 我的例子之后需要至少2个.它可以根据需要进行更改.

编辑:我已经添加了?[_-],以说明是可选的,每下方的评论.


关于量词的一些额外信息:

  • {N,} 表示前一项必须至少有N个字符才能匹配.
  • {N} 意味着必须有前面的N个.
  • {N,M} 意味着必须至少有N,但不得超过M.
  • ? 意味着必须有前面的0或1.
  • + 意味着必须有1个或更多.
  • * 意味着必须有0或更多.