我正在尝试用我的asp.net项目中的一个简单的RegEx替换我们的密码验证,该项目使用了regularrexpression验证器。
以下是密码限制:
我在正则表达式中是n00b,这是我要求勺子喂食的唯一问题类型;)
我尝试了以下正则表达式,但在少数情况下失败了。
string re1="([a-z])"; // Any Single Word Character (Not Whitespace) 1
string re2=".*?"; // Non-greedy match on filler
string re3="."; // Uninteresting: c
string re4=".*?"; // Non-greedy match on filler
string re5="."; // Uninteresting: c
string re6=".*?"; // Non-greedy match on filler
string re7="(.)"; // Any Single Character 1
string re8="(\\d)"; // Any Single Digit 1
Regex r = new Regex(re1+re2+re3+re4+re5+re6+re7+re8,RegexOptions.IgnoreCase|RegexOptions.Singleline);
Match m = r.Match(txt)
答案 0 :(得分:2)
使用这样的模式:
^(?=.*[a-z])(?=.*[0-9])(?=.*[...]).{6,15}$
您可以将[...]
替换为您要接受的任何字符作为“特殊字符”。
稍微打破一下:
^
)和结束($
)锚点确保输入中没有前导或尾随字符。这是确保实施最大长度所必需的。.{6,15}
位匹配任何字符的6到15个。 (?=...)
是一个先行者。它确保匹配的位置后面跟着出现的任何模式。
.*[a-z]
表示任意数量的字符后跟一个拉丁字母。 .*[0-9]
匹配任意数量的字符后跟一个十进制数字,.*[...]
匹配任意数量的字符,后跟一个“特殊字符”。总的来说,(?=.*[a-z])(?=.*[0-9])(?=.*[...])
的链意味着所有这三种模式必须以任何顺序存在于以下字符串中。
答案 1 :(得分:0)
我也是新手,我发现了一篇关于验证文件名的帖子应该是一样的。
if(preg_match('/^[a-z0-9-_]+$/',$file_name))
{
echo 'good filename';
}
else
{
echo ' The file name can only contain "a-z", "0-9", "_", and "-"';
}
检查它是否包含某些字符,您可以使用这些字符来检测密码中的数字和字母。此外,如果我是你,我还会将密码与常见密码列表进行比较,例如"password"
"password123"
等。