正则表达式验证只包含字符(没有特殊字符但带有重音字符),空格和数字的字符串

时间:2011-07-21 13:41:01

标签: ruby regex validation

我正在使用Ruby on Rails 3.0.9,我想验证一个只能包含字符(不区分大小写的字符),空格和数字的字符串。

更多:

  • 特殊字符不允许(例如:!“£”%& /()=?^)除了-_;
  • 重音字符 允许(例如:à,è,é,ò,...);

我从this question知道的正则表达式是^[a-zA-Z\d\s]*$,但这不会验证特殊字符和重音字符。

那么,我应该如何改进正则表达式?

3 个答案:

答案 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)

仅针对不允许的字符的验证字符串。在这种情况下,|,<,>,“和&。

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