据我所知,\d{2,}
匹配2个或更多连续数字,但我需要知道字符串中是否有任何2位数。
我也很欣赏密码强度计的一些很好的链接。
我现在使用的是
function passwordStrengthPercent(pwd,username)
{
var score = 0, special = /(.*[!,@,#,$,%,^,&,*,?,_,~,;,:,`,|,\\,\/,<,>,\{,\},\[,\],=,\+])/
if (pwd.length < 8 ) return 0
if (pwd.toLowerCase() == username.toLowerCase()) return -1
score += pwd.length * 4
score += ( checkRepetition(1,pwd).length - pwd.length )
score += ( checkRepetition(2,pwd).length - pwd.length )
score += ( checkRepetition(3,pwd).length - pwd.length )
score += ( checkRepetition(4,pwd).length - pwd.length )
if (pwd.match(/(.*[e].*[e].*[e])/)) score -= 15//most common letter in passswords?
if (pwd.match(/(.*[a].*[a].*[a])/)) score -= 15//most common letter in passswords?
if (pwd.match(/(.*[o].*[o].*[o])/)) score -= 10//most common letter in passswords?
if (pwd.match(/^\l+$/) || pwd.match(/^\d+$/) ) return score/2//there was w here in regexp
if (pwd.match(/(.*[0-9].*[0-9].*[0-9])/)) score += 10
//todo additional rules 11
if (pwd.match(special)) score += 15
if (pwd.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) score += 15
if (pwd.match(/(w)/) && pwd.match(/(d)/)) score += 15
if (pwd.match(special) && pwd.match(/(d)/)) score += 10
if (pwd.match(special) && pwd.match(/(w)/)) score += 10
if ( score < 0 ) return 0
if ( score > 100 ) return 100
return score
}
答案 0 :(得分:2)
你可以尝试
^.*\d.*\d.*$
只有在包含(至少)两位数时才匹配。
答案 1 :(得分:1)
你可以使用:
\d.*\d
它匹配行中任意位置的两个数字,即使它们之间还有其他字符。
答案 2 :(得分:0)
检查是否有 完全 两位数字:
^[^\d]*\d[^\d]*\d[^\d]*$
使用grep查看测试:
kent$ echo "23
2 3
ax3x2x
aaaaa23
a222
2
3x3x4
3 4 5"|grep -P "^[^\d]*\d[^\d]*\d[^\d]*$"
23
2 3
ax3x2x
aaaaa23