我on Rails的3.0.9使用Ruby只有字符(无特殊字符,但重音字符)的字符串,空格和数字,我想验证只能包含字符(不区分大小写字符的字符串),空格和数字。正则表达式验证
更多:
- 特殊字符不允许的(如:“£$%& /()= ^!?),除了
-
和_
; - 重音符号被允许(例如:A,E,E,O,...);
,我从this question知道正则表达式是^[a-zA-Z\d\s]*$
但这种做不验证特殊字符和重音字符。
所以,我应该如何提高正则表达式?
我on Rails的3.0.9使用Ruby只有字符(无特殊字符,但重音字符)的字符串,空格和数字,我想验证只能包含字符(不区分大小写字符的字符串),空格和数字。正则表达式验证
更多:
-
和_
;,我从this question知道正则表达式是^[a-zA-Z\d\s]*$
但这种做不验证特殊字符和重音字符。
所以,我应该如何提高正则表达式?
我写的^(?:[^\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,虽然是一个并不意味着允许_或 - 字符。
验证字符串仅适用于不允许的字符。在这种情况下,|“和&
^[^|<>\"&]*$
当你说 “?,<,>,字符”,你的意思是 “字母” 的所有字符串包含字符A,7%和▲都是。字符 –
提供的正则表达式不允许特殊字符'!“£$%&/()=?^'... –
@Justin Morgan - 是的,我的意思是”字母“。为我的模糊而道歉。 – Backo