Mad*_*dhu 5 c# regex numbers alphanumeric char
我正在使用C#with .NET构建用户注册表单.我需要验证用户输入的密码字段.验证要求如下.
stack1over
)我正在使用如下的正则表达式.
^([a-zA-Z0-9]{6,10})$
Run Code Online (Sandbox Code Playgroud)
它满足了我的前两个条件.当我只输入字符或数字时,它会失败.
如果可以的话,将它传递给多个正则表达式.它会比那些超前的怪物清洁得多:-)
^[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)
我知道我更喜欢哪一个:-)
使用正向前瞻
^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]{6,10}$
Run Code Online (Sandbox Code Playgroud)
环顾四周也被称为零宽度断言.它们的零宽度就像行的起点和终点(
^
,$
)一样.区别在于,lookarounds实际上匹配字符,但随后放弃匹配并仅返回结果:匹配或不匹配.这就是他们被称为"断言"的原因.它们不消耗字符串中的字符,但仅断言是否可以匹配.
环顾四周的语法:
(?=REGEX)
积极的向前看(?!REGEX)
消极的向前看(?<=REGEX)
积极的看后面(?<!REGEX)
消极的背后