2011-07-20 123 views

回答

18

有幾種方法可以做到這一點。如果你只想用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 
+7

請務必在http://rubular.com測試您的正則表達式。 –

+0

@ ream88 - 謝謝;編輯刪除'\ p {L}'版本。我並不想用這麼短的正則表達式來檢查。 '\ p {L}'不起作用 - 爲什麼? Ruby正則表達式不支持它嗎?它在.NET中工作正常。 –

+1

@Justin Morgan - 那麼如何驗證字符串中的重音字符如à,è,é,?......? – Backo

1

您正在尋找:

[a-zA-Z0-9\s]+

+說,一個或多個所以它會不匹配空字符串。如果您還需要匹配它們,請使用*代替+

+0

或者更短,[\ W \ S] + – eugen

+0

......假設非ASCII字符不得.. –

+0

@eugen - 這將允許'_'。 –

0

除了什麼已經說,指派任何正規表示法來在你的控制這您正則表達式變量,例如

regex = ^[a-zA-Z\d\s]*$ 
相關問題