我正在使用C#和.NET构建一个用户注册表单,我需要验证用户输入的密码字段。验证要求如下。
stack1over
)我使用的正则表达式如下所示。
^([a-zA-Z0-9]{6,10})$
它满足我的前两个条件。当我只输入字符或数字时,它会失败。
发布于 2010-02-03 08:22:11
如果可以的话,可以通过多个正则表达式。它会比那些展望未来的怪物清洁得多:-)
^[a-zA-Z0-9]{6,10}$
[a-zA-Z]
[0-9]
虽然有些人可能认为这很聪明,但没有必要用一个正则表达式(有时甚至是任何regex )做任何事情--只要看看那些想要regex来检测75到4093之间数字的人就行了。
您希望看到一些很好的干净代码,如:
if not checkRegex(str,"^[0-9]+$")
return false
val = string_to_int(str);
return (val >= 75) and (val <= 4093)
或者类似于:
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]$")
我知道我更愿意保留哪一个:)
发布于 2010-02-03 07:42:31
使用阳性前瞻
^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]{6,10}$
查找四周也被称为零宽度断言。它们是零宽度,就像行的开始和结束一样(
^
,$
).不同之处在于,看台将实际匹配字符,但随后放弃匹配,只返回结果:匹配或不匹配。这就是为什么他们被称为“断言”。它们不使用字符串中的字符,而是只断言匹配是否可能。
查找四周的语法:
(?=REGEX)
正向前瞻(?!REGEX)
负前瞻(?<=REGEX)
正向后视(?<!REGEX)
负后视发布于 2013-12-05 14:35:29
string r = @"^(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]{6,10}$";
Regex x = new Regex(r);
var z = x.IsMatch(password);
http://www.regular-expressions.info/refadv.html
http://www.regular-expressions.info/lookaround.html
https://stackoverflow.com/questions/2190376
复制相似问题