我正在使用Ruby on Rails 3.0.9,我想验证一个只能包含字符(不区分大小写的字符),空格和数字的字符串。
更多:
-
和_
; 我从this question知道的正则表达式是^[a-zA-Z\d\s]*$
,但这不会验证特殊字符和重音字符。
那么,我应该如何改进正则表达式?
答案 0 :(得分: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,,但该标志不允许使用_或 - 字符。
答案 1 :(得分:0)
像^[\w\s\-]*$
这样的东西应该验证字符,空格,减号和下划线。
答案 2 :(得分:0)
仅针对不允许的字符的验证字符串。在这种情况下,|,<,>,“和&。
^[^|<>\"&]*$