我正在使用Ruby on Rails 3.0.9,我想驗證一個字符串只能有字符(不是特殊字符 - 不區分大小寫) ,空格和數字。正則表達式驗證只有字符(不是特殊字符),空格和數字的字符串
在我的驗證碼我:
validates :name,
:presence => true,
:format => { :with => regex } # Here I should set the 'regex'
如何我應該說明的正則表達式?
我正在使用Ruby on Rails 3.0.9,我想驗證一個字符串只能有字符(不是特殊字符 - 不區分大小寫) ,空格和數字。正則表達式驗證只有字符(不是特殊字符),空格和數字的字符串
在我的驗證碼我:
validates :name,
:presence => true,
:format => { :with => regex } # Here I should set the 'regex'
如何我應該說明的正則表達式?
有幾種方法可以做到這一點。如果你只想用ASCII字字符(無重音符號的字符,如E或與其他字母像Ӕ或ל字母),使用此:
/^[a-zA-Z\d\s]*$/
如果你希望只允許數字和字母從其他語言紅寶石1.8.7,使用這樣的:如果你希望允許其他語言的數字和字母爲的Ruby 1.9.x的
/^(?:[^\W_]|\s)*$/u
,使用此:
^[\p{Word}\w\s-]*$
另外,如果你打算使用正則表達式的1.9.x與Ruby的支持unicode on Rails的,在你的.rb文件的開頭加入這一行:
# coding: utf-8
您正在尋找:
[a-zA-Z0-9\s]+
的+
說,一個或多個所以它會不匹配空字符串。如果您還需要匹配它們,請使用*
代替+
。
除了什麼已經說,指派任何正規表示法來在你的控制這您正則表達式變量,例如
regex = ^[a-zA-Z\d\s]*$
請務必在http://rubular.com測試您的正則表達式。 –
@ ream88 - 謝謝;編輯刪除'\ p {L}'版本。我並不想用這麼短的正則表達式來檢查。 '\ p {L}'不起作用 - 爲什麼? Ruby正則表達式不支持它嗎?它在.NET中工作正常。 –
@Justin Morgan - 那麼如何驗證字符串中的重音字符如à,è,é,?......? – Backo