Rails проверяет полное_имя - PullRequest
9 голосов
/ 13 апреля 2010

Эй ... как бы вы проверили поле с полным именем (имя, фамилия).

Ответы [ 3 ]

30 голосов
/ 13 апреля 2010

Рассмотрим имена вроде:

  • Ms. Ян Левинсон-Гулд
  • Dr. Мартин Лютер Кинг, младший
  • Бретт д'Аррас-д'Одрасей
  • 1010 * Бруно *

Вместо проверки имеющихся символов вы можете просто убедиться, что какой-то набор символов не присутствует.

Например:

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 голос
/ 27 сентября 2014

Не менее одного пробела и не менее 4 символов (включая пробел)

\A(?=.* )[^0-9`!@#\\\$%\^&*\;+_=]{4,}\z
0 голосов
/ 13 апреля 2010

Любая проверка, которую вы здесь проводите, может быть сорвана, если она не носит чрезвычайно общий характер. Например, применение минимальной длины 3, вероятно, примерно настолько же разумно, насколько это возможно, не вдаваясь в подробности того, что вводится.

Когда у вас есть такие имена, как «О'Мэлли» с апострофом, «Смит-Джонсон» с чертой, «Андрес» с акцентированными символами или чрезвычайно короткие имена, такие как «Во Ли», практически без символов, вы подтверждаете без исключения законных случаев? Это не легко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...