Ruby 用于验证仅包含字符(无特殊字符,但带有重音字符)、空格和数字的字符串的正则表达式

Ruby 用于验证仅包含字符(无特殊字符,但带有重音字符)、空格和数字的字符串的正则表达式,ruby,regex,validation,Ruby,Regex,Validation,我使用的是RubyonRails3.0.9,我想验证一个只能包含字符(不区分大小写的字符)、空格和数字的字符串 更多: 除-和\uuu外,不允许使用特殊字符(例如:!“£$%&/()=?^) 允许使用重音字符(例如:a,è,é,ò,…) 我从中知道的正则表达式是^[a-zA-Z\d\s]*$,但这不会验证特殊字符和重音字符 那么,我应该如何改进正则表达式呢?类似于^[\w\s\-]*$的东西应该验证字符、空格、减号和下划线。我写了(如果我知道你想允许和-,这实际上会有所不同)我自己不是Rub

我使用的是RubyonRails3.0.9,我想验证一个只能包含字符(不区分大小写的字符)、空格和数字的字符串

更多:

  • -
    \uuu
    外,不允许使用特殊字符(例如:!“£$%&/()=?^)
  • 允许使用重音字符(例如:a,è,é,ò,…)
我从中知道的正则表达式是
^[a-zA-Z\d\s]*$
,但这不会验证特殊字符和重音字符


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

类似于
^[\w\s\-]*$
的东西应该验证字符、空格、减号和下划线。

我写了(如果我知道你想允许和-,这实际上会有所不同)我自己不是Ruby的人,我没有意识到Ruby默认不使用Unicode进行正则表达式匹配

对不起,我缺乏Ruby经验。这会切换到Unicode(UTF-8),因此会捕获重音字符。以下是您想要的模式:

^[\w\s-]*$
我想这应该能奏效


u
标志,但该标志不允许使用u或-字符。

验证字符串仅用于不允许的字符。在本例中,|、、”和&


^[^ | \“&]*$

重音字符在Ruby中不是
\w
的一部分,根据我在上检查的正则表达式-它似乎工作,\w也匹配重音字符。当你说“characters”时,你是指“字母”吗?所有字符串都包含字符。A、7、%和▲ 都是字符。如果正则表达式不允许特殊字符
!“£$%&/()=?^
…@Justin Morgan-是的,我指的是“字母”。为我的含糊不清道歉。您的正则表达式“^[\w\s-]*$”也匹配!,“,”,…我不想匹配。@Backo-。
\w
只匹配字母、数字,
\s
匹配空格,
-
在字符类的末尾使用时是一个文字连字符。@Backo-这很奇怪……Rubular使用Ruby正则表达式引擎,所以我希望Rubular上的任何东西都能工作k为您。您使用的是什么版本的Ruby?我不确定它为什么对您不起作用,但我唯一能想到的是您可能没有正确应用
u
标志。您使用的是
/^[\w\s-]*$/u
作为您的正则表达式语法?@JustinMorgan我认为您的解决方案不适用于ruby 1.9.2。我选择将特殊字符直接添加到我的正则表达式中