Направляющие, проверяющие full_name

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

9
задан xpepermint 13 April 2010 в 12:23
поделиться

2 ответа

Рассмотрим такие имена, как:

  • Мисс Джен Левинсон-Гулд
  • Доктор Мартин Лютер Кинг-мл.
  • Brett d'Arras-d'Haudracey
  • Brüno

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

Например:

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
30
ответ дан 4 December 2019 в 07:04
поделиться

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

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

1
ответ дан 4 December 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: