2011-10-23 89 views
1

我正嘗試在Ruby on Rails中創建用於正確用戶名驗證的正則表達式,但出於某種原因,我在做所有用戶名輸入無效的情況時出錯。我允許使用大寫字母,小寫字母,數字和下劃線。Ruby on Rails正則表達式無效

Ruby on Rails的名稱驗證的正則表達式代碼:

validates :name, :format => {:with => /\A[A-Za-z\d_]\z/} 

我在做什麼錯?

感謝

+0

嘗試使用資本\ Z或與嘗試^和$,而不是 –

回答

1
# \A[A-Za-z\d_]\z 
# 
# Options:^and $ match at line breaks 
# 
# Assert position at the beginning of the string «\A» 
# Match a single character present in the list below «[A-Za-z\d_]» 
# A character in the range between 「A」 and 「Z」 «A-Z» 
# A character in the range between 「a」 and 「z」 «a-z» 
# A single digit 0..9 «\d» 
# The character 「_」 «_» 
# Assert position at the very end of the string «\z» 

這是你的表達。你真的想匹配一個字符嗎?

筆者認爲:

/^\w+$/ 

這是你在找什麼。 \ w是您寫的內容的簡寫字符類。上述正則表達式將

3
validates :name, :format => {:with => /^[A-Za-z0-9\_]+$/} 

尼斯頁面匹配只由一串A-ZA-Z0-9_在紅寶石測試正則表達式:http://rubular.com/

+0

我不認爲應該驗證一個空字符串。你做? – FailedDev

+0

ohh該死的權利,...固定 – davidb

+0

除... ...用'^ $'替換'\ A \ z' 請參閱:http://guides.rubyonrails.org/security.html#regular-expressions – nessur