rails中的正则表达式匹配[\ w]和" - "而不是数字

MKu*_*mar 5 ruby regex ruby-on-rails

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

请帮忙.

Tim*_*ker 5

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

^(?:[^\W\d_]|-)+$
Run Code Online (Sandbox Code Playgroud)

说明:[^\W\d_]匹配任何字母(字面意思是"匹配不是非字母数字字符,数字或下划线的字符").在这种情况下,双重否定是正确的使用方法.由于我们使用的是否定字符类,因此我们需要允许-通过替换.

警告:regular-expressions.info来看,Ruby看起来只与\w简写中的ASCII字符匹配,因此这个正则表达式可能无法正常工作.我没有在这里安装Ruby,但在rubular.com上这个正则表达式工作正常.

替代解决方案

^[[:alpha:]-]+$
Run Code Online (Sandbox Code Playgroud)

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