2011-07-21 225 views
3

我on Rails的3.0.9使用Ruby只有字符(無特殊字符,但重音字符)的字符串,空格和數字,我想驗證只能包含字符(不區分大小寫字符的字符串),空格和數字。正則表達式驗證

更多:

  • 特殊字符允許的(如:「£$%& /()= ^!?),除了-_;
  • 重音符號允許(例如:A,E,E,O,...);

,我從this question知道正則表達式是^[a-zA-Z\d\s]*$但這種做不驗證特殊字符和重音字符。

所以,我應該如何提高正則表達式?

+0

當你說 「?,<,>,字符」,你的意思是 「字母」 的所有字符串包含字符A,7%和▲都是。字符 –

+0

提供的正則表達式不允許特殊字符'!「£$%&/()=?^'... –

+0

@Justin Morgan - 是的,我的意思是」字母「。爲我的模糊而道歉。 – Backo

回答

3

我寫的^(?:[^\W_]|\s)*$ answer in the question you referred to(這實際上會有所不同,如果我早知道你想允許_和 - )。不是我自己的Ruby人,我沒有意識到Ruby默認不使用Unicode進行正則表達式匹配。

對不起,我缺乏Ruby的經驗。 What you want to do is use the u flag.切換到Unicode(UTF-8),因此重音字符被捕獲。 這裏有你想要的圖案:

^[\w\s-]*$ 

And here it is in action at Rubular.這應該做的伎倆,我想。

u標誌works on my original answer as well,雖然是一個並不意味着允許_或 - 字符。

+0

你的正則表達式'^ [\ w \ s - ] * $'也匹配!,「,',...我不想匹配 – Backo

+0

@Backo - [根據這個測試, '\ w'只能匹配字母,數字和'_','\ s'匹配空格,'-'是一個字母連字符 –

+0

你的代碼仍然不適用於重音字母 – Backo

0

喜歡的東西^[\w\s\-]*$應該驗證字符,空格,減號和下劃線。

+0

重音字符是紅寶石不是'\ w'根據[regular-expression.info](http://www.regular-expressions.info/refflavors.html) – stema

+0

我檢查了正則表達式在http部分:// rubular .com/- 它似乎有效,\ w也匹配重音字符。 – eugen

0

驗證字符串僅適用於不允許的字符。在這種情況下,|「和&

^[^|<>\"&]*$