Regex - проверка имени - PullRequest
       6

Regex - проверка имени

2 голосов
/ 22 декабря 2011

Я ищу регулярное выражение для проверки имен. Я искал в сети, а также использовал предложение, данное мне StackOverflow при публикации этого вопроса.

Я также знаю, что это возможно поэтапно, но я ищу regex-1-liner, чтобы мой код был чистым, простым и наиболее важным: быстрым.

Что мне нужно: Регулярное выражение, которое проверяет имена людей, когда они регистрируются на моем сайте. Я хочу разрешить имена как:

  • Имя
  • Имя Фамилия
  • Имя О'Брайан
  • Фамилия, имя, отчество, фамилия
  • Имя, имя-фамилия-два
  • N. Фамилия

Но я не хочу разрешать имена как:

  • Имя (двойной пробел)
  • Имя - верное имя (двойной минус)
  • Name-- '(просто фигня)

Ну, я думаю, вы понимаете, что я имею в виду и чего я не хочу допускать.

Я хочу использовать только a-zA-Z и -. ' Я думаю, что это единственное, что мне нужно разрешить. -. Знаки могут использоваться только один раз между или после слова. Поскольку имя типа «имя О'Брайан» не существует.

Но такое имя, как «Имя, имя-фамилия-треть-третье», должно быть разрешено. Итак, один пробел и один знак минус.

Я придумал несколько регулярных выражений, используя http://public.kvalley.com/regex/regex.asp и другие программы регулярных выражений. Но я просто новичок с регулярным выражением ».

Я надеюсь, что кто-то много знает о регулярных выражениях и готов помочь мне. Потому что на данный момент .. я застрял: (

Заранее спасибо,

Jelmer

пс. Если у вас есть какие-либо вопросы относительно моего вопроса. Пожалуйста, спросите их, потому что я действительно хотел бы получить вашу помощь!

Ответы [ 2 ]

0 голосов
/ 22 декабря 2011

это не пуленепробиваемый, но должен дать вам подсказку в правильном направлении

([a-zA-ZáéíóúñÑ]+ ?'?-?)+

ОБНОВЛЕНИЕ: Вот лучший подход в соответствии с предложением @Tim

([a-zA-ZáíóúñÑö]+( |'|-)?)+
0 голосов
/ 22 декабря 2011

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

  1. Simple
  2. Clean
  3. Fast

Выберите два.

В дополнение к этому я гарантирую, что однострочный этот комплекс никогда не будет чистым. Разбейте его на регулярные выражения и закомментируйте. Позже вы будете благодарны, что сделали! Пока вы в этом, превратите его в универсальный класс валидатора имен, который вы можете использовать повторно. Хотя Perl может быть превращен экспертами в нечто совершенно безобразное, его красота часто проявляется, когда мы следуем тем же законам вежливости и чистоты, которые мы соблюдаем в других, более структурированных языках.

TL; ДР: Не делайте это однострочником. Пожалуйста.

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