Rails验证full_name

时间:2010-04-13 12:23:58

标签: ruby-on-rails validation validating

嘿......你将如何验证一个full_name字段(名字姓氏)。

3 个答案:

答案 0 :(得分:30)

考虑如下名称:

  • 女士。 Jan Levinson-Gould
  • 博士。 Martin Luther King,Jr。
  • Brett d'Arras-d'Haudracey
  • 布鲁诺

您可能只想确保某些字符集,而不是验证那里的字符。

例如:

class User < ActiveRecord::Base

  validates_format_of :full_name, :with => /\A[^0-9`!@#\$%\^&*+_=]+\z/
  # add any other characters you'd like to disallow inside the [ brackets ]
  # metacharacters [, \, ^, $, ., |, ?, *, +, (, and ) need to be escaped with a \

end

测试

Ms. Jan Levinson-Gould         # pass
Dr. Martin Luther King, Jr.    # pass
Brett d'Arras-d'Haudracey      # pass
Brüno                          # pass
John Doe                       # pass
Mary-Jo Jane Sally Smith       # pass
Fatty Mc.Error$                # fail
FA!L                           # fail
#arold Newm@n                  # fail
N4m3 w1th Numb3r5              # fail

正则表达式解释

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  \A                       the beginning of the string
--------------------------------------------------------------------------------
  [^`!@#\$%\^&*+_=\d]+     any character except: '`', '!', '@', '#',
                           '\$', '%', '\^', '&', '*', '+', '_', '=',
                           digits (0-9) (1 or more times (matching
                           the most amount possible))
--------------------------------------------------------------------------------
  \z                       the end of the string

答案 1 :(得分:1)

至少一个空格和至少4个字符(包括空格)

\A(?=.* )[^0-9`!@#\\\$%\^&*\;+_=]{4,}\z

答案 2 :(得分:0)

您在此处执行的任何验证都可能会崩溃,除非它非常笼统。例如,强制执行最小长度为3可能与您可以获得的结果一样合理,而无需深入了解所输入的内容。

当你的名字如“O'Malley”与撇号,“史密斯 - 约翰逊”与短划线,“Andrés”与重音字符或极短的名称,如“Vo Ly”几乎没有任何字符,如何在不排除合法案件的情况下验证吗?这不容易。