2016-07-15 243 views
0

我想創建一個密碼字段的正則表達式,檢查輸入是否包含至少兩個字符集(字母,數字,標點符號,特殊字符)。另外,第一個和最後一個字符不能是數字,長度必須至少爲8個字符。正則表達式混合至少2個字符(字母,數字,標點符號,特殊字符)

我從來沒有處理正則表達式的條件邏輯,所以這可能是爲什麼我有這麼難的時間。到目前爲止,這(但它不按預期工作):

(?=.{8,})(\d.*[a-zA-Z])|(?=.{8,})([a-zA-Z].*\d)|(?=.{8,})(\W.*\d)|(?=.{8,})(\d.*\W)|(?=.{8,})(\W.*[a-zA-Z])|(?=.{8,})([a-zA-Z].*\W)|(?=.{8,})([a-z].*[A-Z])|(?=.{8,})([A-Z].*[a-z]) 

回答

1

就個人而言,我不會這樣做與一個單一的正則表達式。爲什麼不通過一組簡單的程序來運行它,只是爲了讓您自己的維護難題避免不必要的麻煩?類似於(按僞代碼):

// First and last are non-numeric and length check 
if (!regex_check(pass, /^[^0-9].{6}.*[^0-9]$/)) return false 

regexes = {/[a-zA-Z]/, /[0-9]/, /\p{P}|\p{Sc}|\^/} // Different character categories 

numCategories = 0 
for r in regex 
    if (regex_check(pass, r)) numCategories += 1 

if numCategories >= 2 return true 
return false 
相關問題