用于接受字母数字字符的正则表达式(6-10个字符).NET,C#

Mad*_*dhu 5 c# regex numbers alphanumeric char

我正在使用C#with .NET构建用户注册表单.我需要验证用户输入的密码字段.验证要求如下.

  1. 它应该是字母数字(az,AZ,0-9)
  2. 它应该接受6-10个字符(最少6个字符,最多10个字符)
  3. 与至少1字母和数字(例如:stack1over)

我正在使用如下的正则表达式.

^([a-zA-Z0-9]{6,10})$
Run Code Online (Sandbox Code Playgroud)

它满足了我的前两个条件.当我只输入字符或数字时,它会失败.

pax*_*blo 9

如果可以的话,将它传递给多个正则表达式.它会比那些超前的怪物清洁得多:-)

^[a-zA-Z0-9]{6,10}$
[a-zA-Z]
[0-9]
Run Code Online (Sandbox Code Playgroud)

虽然有些人可能认为它很聪明,但没有必要用一个正则表达式做任何事情(或者甚至用任何正则表达式,有时 - 只是见证那些希望正则表达式检测75到4093之间的数字的人).

您是否愿意看到一些漂亮的干净代码,如:

if not checkRegex(str,"^[0-9]+$")
    return false
val = string_to_int(str);
return (val >= 75) and (val <= 4093)
Run Code Online (Sandbox Code Playgroud)

或类似的东西:

return checkRegex(str,"^7[5-9]$|^[89][0-9]$|^[1-9][0-9][0-9]$|^[1-3][0-9][0-9][0-9]$|^40[0-8][0-9]$|^409[0-3]$")
Run Code Online (Sandbox Code Playgroud)

我知道更喜欢哪一个:-)


Ama*_*osh 7

使用正向前瞻

^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]{6,10}$
Run Code Online (Sandbox Code Playgroud)

环顾四周也被称为零宽度断言.它们的零宽度就像行的起点和终点(^,$)一样.区别在于,lookarounds实际上匹配字符,但随后放弃匹配并仅返回结果:匹配或不匹配.这就是他们被称为"断言"的原因.它们不消耗字符串中的字符,但仅断言是否可以匹配.

环顾四周的语法:

  • (?=REGEX) 积极的向前看
  • (?!REGEX) 消极的向前看
  • (?<=REGEX) 积极的看后面
  • (?<!REGEX) 消极的背后