2010-07-16 135 views
-1

我需要一個用於密碼字段的Ruby on Rails應用程序的正則表達式。不允許空格的密碼驗證的正則表達式

除空格外,任何字符或數字或符號都是允許的。

+3

出於興趣,你爲什麼不允許空間? – 2010-07-16 14:35:44

+1

是否建議允許密碼空格? – 2011-07-25 03:54:21

+1

@mcxiand在密碼中允許空格並不少見。例如,Windows在密碼中接受空格。通過允許空格,您可以增加用戶可以使用的可能密碼的總數,從而幫助使密碼更難以暴力破解,從而使密碼更安全。幾乎沒有理由**不允許**在密碼中允許空格。 – 2014-05-31 18:28:45

回答

8

如果這是在Javascript中的客戶端驗證(或比Ruby其它任何語言),此表達式將一個串匹配沒有空白(\S)至少一個字符(+),無最大:

^\S+$

Ruby是,默認情況下使用多行模式的唯一語言,所以一開始的行^$行爲不同終端的線(它們每輸入相匹配一次,不管有多少行)。因此,如果您使用Ruby驗證輸入,則需要使用\A作爲開始行,並使用\Z作爲行尾。

\A\S+\Z

+0

你的正則表達式不會做你聲稱它做的事。 「^」在Ruby正則表達式中的含義是什麼? '$'怎麼樣? – 2014-05-31 18:41:41

+0

@ muistooshort昨天增加了'ruby'和'ruby-on-rails'標籤。我認爲驗證實際上是在客戶端完成的,所以我的答案是針對Javascript(或除Ruby之外的任何其他語言)。 Ruby是唯一默認使用多行模式的語言,所以你可以用'\ A'替換'^',用'\ Z'替換''''。 – Jay 2014-06-01 20:31:49

1

除空格以外的所有內容,您是否需要將結果縮小一點以上?

/[^ ]+/ 
+1

用戶可以粘貼製表符。我知道OP沒有說「空白」,但我認爲這是意圖。 – Jay 2010-07-16 14:38:36

1

這是一個沒有最小長度(或更確切地說,與最小長度1):

^\S+$ 

隨着最小長度8:

^\S{7}\S+$ 

,或者,如果您的正則表達式引擎的支持它(不知道爲什麼它不會):

^\S{8,}$ 
+1

第一個最小長度爲1,這些忽略排除空格的要求。 – Jay 2010-07-16 14:36:26

+0

@Jay:是的,我在第一時間修正了第一個問題,並且修正了第二個問題。 '''把''與'\ w' /'\ S'混合了一會兒。 – JAB 2010-07-16 14:37:01

+2

好的,但是'\ w'恐怕還不符合法案。 OP要求提供包含標點符號的「任何字符或數字或符號」。 '\ w'只是字母,數字和下劃線。 – Jay 2010-07-16 14:40:33