Я использую это регулярное выражение для проверки имен:
/^[A-Za-zàèéáäÄüÜöÖ]+$/
Как я могу добавить правило, разрешающее один дефис (-
)? Иногда у людей есть дефисы в их имени, например. "Ханс-Мейер"
Я старался:
/^[A-Za-zàèéáäÄüÜöÖ[-{1}]]+$/
Дефис не должен стоять ни в начале, ни в конце.
Используйте /^[A-Za-zàèéáäÄüÜöÖ]+(?:-[A-Za-zàèéáäÄüÜöÖ]+)?$/
Мой комментарий более философский. С технической стороны попробуйте так:
/^[A-Za-zàèéáäÄüÜöÖ]+-?[A-Za-zàèéáäÄüÜöÖ]+$/
Я предлагаю изменить -? часть для -*, поэтому она будет соответствовать нулю или большему числу дефисов, решая ситуацию, которую вы прокомментировали в вопросе: «У некоторых людей есть несколько дефисов»: ^[A-Za-zàèééáäÄüÜöÖ]+-*[A-Za-zàèéáäÄüÜöÖ]+$ Demo : regex101.com/r/RhosOA/2
@Пабло. № 1, это не то, о чем спрашивал ОП, № 2, -* означает любое количество дефисов последовательный, что бессмысленно.
ok @Mad Physicist Я понял, что, когда вы сказали «У некоторых людей есть несколько дефисов», вы имели в виду xxx xx-xx xx--xx xx-(n)xx, и это то, что решает -* (ноль или более чисел -). Я неправильно понял ваш комментарий.
У некоторых людей есть несколько дефисов. Если вам действительно нужны имена, не проверяйте их. Заставьте их подтвердить, сделав нежелательными последствия неправильного ввода вашего имени.