2011-08-30 46 views
3

我需要驗證符合以下條件的密碼:爲密碼驗證的正則表達式

  • 最少8個字符
  • 包含數字和字母的組合
  • 不能執行特殊字符

下面的正則表達式是我想出的:

^{8,}.(?=*\d)(?=.*[a-zA-Z])& 

但這種失敗的:

  • PASSWORD1
  • 密碼1
  • 密碼1

據我所知,試圖調查正則表達式,{8,}意味着8和唐最低不在乎最大值,\d指定數字,空格和特殊字符。 a-z有意義。

+0

是什麼該&符號應該在做什麼?你的意思是'$'? –

+0

雖然這可能是可能的,但正則表達式似乎不是解決此問題的好方法。你需要使用它們,還是你會考慮一個非正則表達式的解決方案? (雖然我們需要知道你在用什麼語言工作) –

+0

@JadedEric,我可以全心全意地推薦一個開發環境,在這裏你可以測試你的正則表達式,例如[Expresso](http://www.ultrapico的.com/Expresso.htm)。 – bzlm

回答

5

嘗試:

^(?=.*\d)(?=.*[a-zA-Z]).{8,}$ 

See it @work

+0

我有這個,把它從一個網站上拿下來,但沒有奏效。發現我們的會員提供商也限制了字符:$。現在感覺像是一名研究生開發人員。謝謝。 – JadedEric

+0

那麼,我會刪除我的「答案」。對你有好處:D – Kheldar

+0

@JadedEric你能解釋一下'?=。*'是什麼意思?或者只是'?='......我知道'a?'允許使用'a'或不使用'a'。只是不知道'問號(?)'在你把'equals(=)'放在它後面時會做什麼。 –

-1

不是簡單最有效的方法:

^[a-zA-Z0-9!.-_]{8,}$ 

替換!.-_用的特殊字符的列表,你想允許

+0

-1這允許密碼 – NullUserException

+0

@NullUserException你是什麼意思? OP是要求一個正則表達式來驗證密碼,所以我不明白你的意思是'這允許密碼'。 –

+0

@ WilliamD.Edwards在這裏提供的答案將允許'密碼'驗證,違反原始問題的條件。 – NullUserException