验证:仅允许字母,数字,空格,连字符和撇号

时间:2014-03-20 21:30:24

标签: ruby-on-rails ruby regex validation

我尝试这样做:

validates :name, :format => { :with => /^[a-zA-Z][a-zA-Z0-9 -']+$/ }

然而,它允许!同样。 我怎么能改变代码所以它只允许名字中的字母,数字,空格,连字符和撇号,并且它将以字母开头?

谢谢!

1 个答案:

答案 0 :(得分:4)

你没有逃脱你的正则表达式中的-

^[a-zA-Z][a-zA-Z0-9 \-']+$
                     ^ here

如果将-放在字符类[]内(两个characetrs之间),则必须使用转义字符(即\)对其进行转义。否则它意味着一个范围。对于您的情况,它位于space'之间。这意味着任何字符从space(ascii值)到'(ascii值)。不幸的是!就在那个范围内。