与此主题类似.
我正在尝试使用以下限制验证用户名:
编辑:
被困了一会儿.我是正则表达式的新手.
Ben*_*igt 14
作为Mark答案的优化:
^(?=.{3,15}$)([A-Za-z0-9][._()\[\]-]?)*$
Run Code Online (Sandbox Code Playgroud)
说明:
(?=.{3,15}$) Must be 3-15 characters in the string
([A-Za-z0-9][._()\[\]-]?)* The string is a sequence of alphanumerics,
each of which may be followed by a symbol
Run Code Online (Sandbox Code Playgroud)
这个允许使用Unicode字母数字:
^(?=.{3,15}$)((\p{L}|\p{N})[._()\[\]-]?)*$
Run Code Online (Sandbox Code Playgroud)
这个是Unicode变体,另外还使用非捕获组:
^(?=.{3,15}$)(?:(?:\p{L}|\p{N})[._()\[\]-]?)*$
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 12
在单个正则表达式中表达一组不相关的规则并不是那么干净,但可以通过使用外观断言(Rubular)来完成:
@"^(?=[A-Za-z0-9])(?!.*[._()\[\]-]{2})[A-Za-z0-9._()\[\]-]{3,15}$"
Run Code Online (Sandbox Code Playgroud)
说明:
(?=[A-Za-z0-9]) Must start with a letter or number
(?!.*[._()\[\]-]{2}) Cannot contain two consecutive symbols
[A-Za-z0-9._()\[\]-]{3,15} Must consist of between 3 to 15 allowed characters
您可能想要考虑这是否更容易阅读,并且作为更简单的正则表达式列表更易于维护,所有这些都必须成功验证,或者将其写入普通的C#代码中.