C# 优化和改进`username`regex
我创建了这个C# 优化和改进`username`regex,c#,regex,c#-4.0,C#,Regex,C# 4.0,我创建了这个Regex来验证我在项目中需要的用户名: ^(?=.{3,32}$)(?!.*[._-]{2})(?!.*[0-9]{5,})[a-z](?:[\w]*|[a-z0-9\.]*|[a-z0-9-]*)[a-z0-9]$ 它工作得很好;但我想知道是否有任何改进和优化,因为我不完全是一个正则表达式的家伙 可以使用正则表达式和测试 规则是: 用户名应以[a-z] 用户名应以[a-z0-9] 用户名的长度可以在3到32之间 用户名可以包含[a-z0-9\.\uz-] 数字之间的距离不得超
Regex
来验证我在项目中需要的用户名:
^(?=.{3,32}$)(?!.*[._-]{2})(?!.*[0-9]{5,})[a-z](?:[\w]*|[a-z0-9\.]*|[a-z0-9-]*)[a-z0-9]$
它工作得很好;但我想知道是否有任何改进和优化,因为我不完全是一个正则表达式的家伙
可以使用正则表达式和测试
规则是:
- 用户名应以
[a-z]
- 用户名应以
[a-z0-9]
- 用户名的长度可以在3到32之间
- 用户名可以包含
[a-z0-9\.\uz-]
- 数字之间的距离不得超过4次。我的意思是,
是匹配项,p1234
不是匹配项p12345
- 每个用户名只能包含
中的一个。我的意思是用户名可以包含[\.\u-]
或
或-
- 每个
、
和-
后面都应该跟一个字母数字。我的意思是一个
后面不能跟着另一个
。它们不应该彼此靠近
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
提前谢谢。我会把它分成几张支票。这样,您就可以报告特定用户名的确切错误,而不仅仅是“它错了”。PS:
performance
标签在这里没有多大意义。看起来像是一个主题,但不是。@HABO我不知道CodeReview
站点;谢谢你的提醒。我现在正在检查它。@zerkms我删除了performance
tag您不必对所有这些都使用正则表达式,对吗?例如,用C#检查长度要容易得多。