2010-03-08 164 views
0

我需要與下列要求來驗證密碼: 1.至少七個字符長 2.包含至少一個字母(az或AZ) 3包含至少一個數字(0-9) 4包含至少一個符號(@,$,%等) 任何人都可以給我正確的表達嗎?密碼驗證

+1

用正則表達式做它可能不是一個正確的想法,但是你可以寫一些單獨的正則表達式來檢查每個條件 – 2010-03-08 02:46:08

+0

你的意思是使用正則表達式嗎?你試過什麼了? – 2010-03-08 02:46:22

+2

順便說一句,要求密碼包含符號是一個壞主意。它並不會增加可用選項的數量,但它會因使用外部鍵盤佈局等而容易造成麻煩。只要密碼足夠長(至少有8個字符),需要大小寫和一個數字就可以得到62的字母,這就足夠了。 – Tronic 2010-03-08 02:49:22

回答

1

對於單一的正則表達式,檢查所有的要求,最直接的方法是用lookaheads

/(?=.*[a-zA-Z])(?=.*\d)(?=.*[^a-zA-Z0-9\s]).{7,}/ 

其分解:

  1. .{7,} - 至少七個字符
  2. (?=.*[a-zA-Z]) - 一個字母必須與字符串
  3. (?=.*\d)開始後的某個地方發生 - 同上2,除一個數字
  4. (?=.*[^a-zA-Z0-9\s]) - 同上2,但不包括字母,數字或空格的東西

但是,您可能會選擇簡單地使用多個單獨的正則表達式匹配來保持事情的可讀性 - 可能您並不是一次驗證大量密碼,因此性能並不是一個很大的要求。