LINUX.ORG.RU

Помогите с регулярным выражением

 ,


0

1

Делаю проверку на правильность написания по базе с именами и фамилиями «Имя Фамилия» (С заглавной буквы имя и фамилия, между ними пробел) через регулярное выражение «/\A[А-Я]{1}[а-я|ё]+ [А-Я]{1}[а-я|ё]+\z/u» все отлично работает, но спотыкается на «Римский-Корсаков Николай» и им подобным именам. Кто шарит в регулярках помогите составить выражение, чтобы и дефисы прокатывали. Спасибо.

у меня только такие длинные конструкции получаются /\A([А-Я]{1}[а-я|ё]+|[А-Я]{1}[а-я|ё]+-[А-Я]{1}[а-я|ё]+) ([А-Я]{1}[а-я|ё]+|[А-Я]{1}[а-я|ё]+-[А-Я]{1}[а-я|ё]+)\z/u может есть вариант покрасивее?

files32
() автор топика
Ответ на: комментарий от files32

Используй [\-]{1} для дефиса, чтобы точно знать что он один. Ну и учитывай не только простой дефис, иногда кто-то и ndash/mdash/etc протолкнет. А насчет «покрасивее» точно не заморачивайся, регулярки, они на то и регулярки.

znenyegvkby
()
Ответ на: комментарий от files32

Слов то сколько должно быть, что ты зацепился за заглавную ?
Я бы проще написал: (\S+)\s(\S+)
Да будь ты хоть негр преклонных годов, регулярки учи -)

Vasily22
()

А php настолько убогий язык, что сабжевую задачу надо решить исключительно regexp-ми?

ados ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.