正則表達式驗證密碼強度

private int CheckSecurity(string pwd)  
{  
    return Regex.Replace(pwd, "^(?:([a-zA-Z])|([0-9])|(.)){9,}|(.)+$", "$1$2$3$4").Length;  
}  

在網上看過不少種驗證密碼強度的方法,但無一不長篇大論。函數

今天無心發現一種很牛X的方法,利用正則,且只有一句話就搞定了。spa

大概介紹一下:code

密碼字符包括:小寫字母、大寫字母、數字、符號等;blog

這個正則會獲得五個捕獲組,前四個捕獲組會告訴咱們這個字符串包含有多少種組合(返回多少個匹配表明多少種組合)字符串

若是這個字符串小於6位的話,則會獲得第五個捕獲組,長度爲1(即強度爲1),若是沒有輸入,就連捕獲組5都不會獲得(強度爲0)string

雖然是一句話的函數,但卻考了好多個正則的知識點:範圍、包含、長度、捕獲、替換。膜拜一下!it

不過做者貌似說還有待改進,我想,應該是特殊字符,例如全角字符不能正確識別的問題吧。正常使用不受影響。class

 

我的備註:密碼

(?:) 是表示不獲取匹配結果,因此後面的四個小括號就能夠對應$1$2$3$4方法

小括號,如(pattern)表示獲取這一匹配,$1就是匹配第一個小括號裏的獲取內容,在這裏$1表明匹配[a-zA-Z]的字符,就是最後一個字母。

{9,}表示長度大於9

相關文章
相關標籤/搜索