Есть регулярное выражение для проверки ФИО:
var regExp = /^([А-ЯA-Z]|[А-ЯA-Z][\x27а-яa-z]{1,}|[А-ЯA-Z][\x27а-яa-z]{1,}\-([А-ЯA-Z][\x27а-яa-z]{1,}|(оглы)|(кызы)))\040[А-ЯA-Z][\x27а-яa-z]{1,}(\040[А-ЯA-Z][\x27а-яa-z]{1,})?$/
if (regExp.test("Иванов-Сергеев Иван Иванович"))
console.log("true");
else
console.log("false");
Данное регулярное выражение верное, но как добавить в проверку ФИО тире? Например, для такого ФИО:
Иванов-Сергеев Иван Иванович
У людей бывает тире в фамилии или в имени.
Как будет правильно написать такое регулярное выражение?
Правильно будет не писать регулярное выражение на ФИО. Не портите и не усложняйте жизнь ни себе, ни пользователям.
Разве что на максимальную длину стоит сделать ограничение. Причем только как защиту от злоумышленников, которые попытаются туда подсунуть пару-тройку тысяч символов.
Можно и так
function isCorrectFIO(fio) {
if (!fio) {
return false;
}
var fioA = fio.split(' ');
if (fioA.length !== 3) {
return false;
}
for (var i = 0; i < 3; i++) {
if (/[^-А-ЯA-Z\x27а-яa-z]/.test(fioA[i])) {
return false;
}
}
return true;
}
if (isCorrectFIO("Иванов-Сергеев Иван Иванович"))
console.log("true");
else
console.log("false");
Тут главный вопрос для чего именно?
Регулярка для проверки ФИО это огромное зло, но если уж очень надо, то лучше ее сделать простую, например, так \W{1,}\s\W{1,}(?=\s\W).
Используйте лучше подсказки https://dadata.ru/suggestions/#name. Для небольших проектов они и денег не берут, и данные приличные в базу попадают, проверено неоднократно.
Попробуй вот такую регулярку. А вообще для ФИО их лучше не использовать
/^[А-Я][а-я]*([-][А-Я][а-я]*)?\s[А-Я][а-я]*\s[А-Я][а-я]*$/
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости