Вопрос

Эй ... Как бы вы проверили поле Full_Name (имя фамилии).

Это было полезно?

Решение

Рассмотрим названия как:

  • Мисс Ян Левинсон-Гулд
  • Доктор Мартин Лютер Кинг, младший
  • Бретт д'Аррас-д'Аудраси
  • 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

Другие советы

По меньшей мере, одно пространство и не менее 4 чар (включая пространство)

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top