优化和改进`用户名'正则表达式

时间:2014-07-02 02:09:03

标签: c# regex c#-4.0

我创建了这个Regex来验证我在项目中需要的用户名:

^(?=.{3,32}$)(?!.*[._-]{2})(?!.*[0-9]{5,})[a-z](?:[\w]*|[a-z0-9\.]*|[a-z0-9-]*)[a-z0-9]$

它运作得很好;但是我想知道它是否有任何改进和优化,因为我并不是一个正则表达式的人。

正则表达式和测试可用here

规则是:

  • 用户名应以[a-z]
  • 开头
  • 用户名应以[a-z0-9]
  • 结尾
  • 用户名的长度可以介于3到32之间
  • 用户名可以包含[a-z0-9\._-]
  • 中的任何一个
  • 数字不应超过4次。我的意思是p1234是匹配而p12345不是。
  • 每个用户名只能包含[\._-]中的一个。我的意思是用户名可以包含.-_
  • 每个.-_后面应加上字母数字。我的意思是.无法跟随另一个.。他们不应该在彼此附近。

试验:

j1vad-amiry            match
j1vad-ami-ry           match
ja23d_am8ry            match
ja_23d_am8ry           match
jav5d2.am3y            match
jav.ad.amiry           match
jav.ad.ami.ry.2        match
ja3fd4                 match
page2491               match
page24915              not match
jav-ad_amiry           not match
javad_am-iry           not match
jav.ami-ry             not match
jav.ami_ry             not match
jav.ami__ry            not match
2jav                   not match
2jav_ad                not match
2jav_ad3               not match

提前致谢。

0 个答案:

没有答案