Rails验证full_name

xpe*_*int 9 validation ruby-on-rails validating

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

mač*_*ček 30

考虑如下名称:

  • Jan Levinson-Gould女士
  • 小马丁·路德金博士
  • 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
Run Code Online (Sandbox Code Playgroud)

测试

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
Run Code Online (Sandbox Code Playgroud)

正则表达式解释

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
Run Code Online (Sandbox Code Playgroud)

  • 虽然有点晚...但是请记住,此正则表达式认可名称为------ (2认同)