Ruby on rails rails中的正则表达式要匹配[\w]和"-&引用;但不是数字

Ruby on rails rails中的正则表达式要匹配[\w]和"-&引用;但不是数字,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,我想为名字验证编写一个正则表达式。 正则表达式应包括所有字母(拉丁/法语/德语字符等)。但是,我想从中排除数字,并允许-。 所以基本上它是\w(减)数字(加)- 请帮忙 ^[\p{L}-]+$ \p{L}匹配 据我所知,Ruby不支持Unicode属性(至少在1.8版之前是这样),所以您可能需要使用 ^(?:[^\W\d_]|-)+$ 说明:[^\W\d][/code>匹配任何字母(字面意思是“匹配既不是非字母数字字符、数字也不是下划线的字符”)。在这种情况下,使用双负片是正确的。因为我们使

我想为名字验证编写一个正则表达式。 正则表达式应包括所有字母(拉丁/法语/德语字符等)。但是,我想从中排除数字,并允许
-
。 所以基本上它是
\w
(减)数字(加)
-

请帮忙

^[\p{L}-]+$

\p{L}
匹配

据我所知,Ruby不支持Unicode属性(至少在1.8版之前是这样),所以您可能需要使用

^(?:[^\W\d_]|-)+$
说明:
[^\W\d][/code>匹配任何字母(字面意思是“匹配既不是非字母数字字符、数字也不是下划线的字符”)。在这种情况下,使用双负片是正确的。因为我们使用的是一个否定字符类,所以我们需要交替地允许
-

警告:从它看来,Ruby只将ASCII字符与
\w
速记匹配,所以这个正则表达式可能无法正常工作。我没有在这里安装Ruby,但是在rubular.com上,这个正则表达式工作正常

替代解决方案

^[[:alpha:]-]+$

应该根据regular-expressions.info和RegexBuddy匹配非ASCII字符,但在rubular.com上不起作用

如果您想要针对验证问题的特定于ruby的解决方案,则可以使用以下方法:

^[\D-]+$
您可以在此处检查此永久链接:

我把它做成了一个社区wiki,这样每个人都可以尝试一下,如果需要的话,可以改进正则表达式


希望这有帮助。干杯:)

也要尽最大努力测试你的ruby正则表达式。也许是因为它不是ruby特有的?@Shripad K:你是什么意思?不是真的。除了数字之外,它匹配所有内容,包括像
这样的字符串!“§$%&
-这不是Dinesh需要的。