2010-06-08 477 views
2

我無法驗證passord與() - = _ +,即它應該accept這些特殊字符,但是當我用正則表達式作爲有()驗證密碼 - = _ +

`validates_format_of :password, :with => /^[A-Za-z0-9. ! @ # $ %^& * () _ - + = ]*\z/` 
它不工作

其唯一的除了*,但不是accepting() - = _ +在軌道上的紅寶石。

+3

你爲什麼要驗證密碼? – Kobi 2010-06-08 06:32:34

+5

由於過於複雜(因而過於安全),拒絕複雜(因此相對安全)的密碼更爲糟糕。 – Quentin 2010-06-08 06:36:26

回答

1

至少-會導致問題,請考慮:[A-Z]^可能會導致問題:[A-Z^Q]是否意味着您的正則表達式風格中除Q以外的所有大寫字母? (如果是這樣,它後面的所有內容似乎都不存在...)

另請參見:零長度密碼有效嗎?

10

這些字符需要用\

逃脫,但我會認真建議您驗證這樣的密碼! 限制用戶可以選擇什麼密碼?您可以人爲地減少角色池供他們選擇,從而使暴力攻擊變得更容易。

將用戶名強制爲ASCII a-z,0-9是一回事,但您絕對不應該將密碼限制爲這樣一小部分字符。

+1

+1退後看到更廣闊的景象。爲什麼我們要限制密碼? – Thanatos 2010-06-08 06:32:00

0

validates_format_of:password,:with =>/^ [A-Za-z0-9。 ! @#$%^ & *()_ - + =] * \ z/

這工作。