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需要的。