我想为名字验证编写正则表达式。
正则表达式应包括所有字母(拉丁/法语/德语字符等)。但是,我想从中排除数字,并允许-
。
所以基本上它是\w
(减号)数字(加号)-
。
请帮忙。
答案 0 :(得分:6)
^[\p{L}-]+$
答案 1 :(得分:5)
据我所知,Ruby不支持Unicode属性(至少在1.8版本之前),因此您可能需要使用
^(?:[^\W\d_]|-)+$
说明:[^\W\d_]
匹配任何字母(字面意思是“匹配一个既不是非字母数字字符,也不是数字或下划线的字符”)。在这种情况下,双重否定是正确的使用方法。由于我们使用的是否定字符类,因此我们需要通过交替允许-
。
警告:从regular-expressions.info来看,Ruby看起来只匹配带有\w
简写的ASCII字符,因此这个正则表达式可能无法正常工作。我没有在这里安装Ruby,但在rubular.com上这个正则表达式工作正常。
备用解决方案
^[[:alpha:]-]+$
应该根据regular-expressions.info和RegexBuddy匹配非ASCII字符,但是在rubular.com上它不起作用。
答案 2 :(得分:0)
如果您想要针对验证问题的特定于ruby的解决方案,那么您可以使用:
^[\D-]+$
您可以在此处查看此永久链接:
http://rubular.com/r/VrAIB4TkwJ
我已将其设为社区维基,以便每个人都可以尝试并在需要时更好地使用正则表达式。
希望这会有所帮助。干杯:)