#javascript #регулярные_выражения
Есть регулярное выражение для проверки ФИО: 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"); Данное регулярное выражение верное, но как добавить в проверку ФИО тире? Например, для такого ФИО: Иванов-Сергеев Иван Иванович У людей бывает тире в фамилии или в имени. Как будет правильно написать такое регулярное выражение?
Ответы
Ответ 1
Правильно будет не писать регулярное выражение на ФИО. Не портите и не усложняйте жизнь ни себе, ни пользователям. Разве что на максимальную длину стоит сделать ограничение. Причем только как защиту от злоумышленников, которые попытаются туда подсунуть пару-тройку тысяч символов.Ответ 2
function handle() { var fio = document.getElementById('fio'); fio.value = fio.value.replace(/[^А-Яа-яЁё ]/g, ""); } var input = document.getElementById('fio'); input.onkeydown = input.onkeyup = input.onkeypress = handle;Ответ 3
Можно и так 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"); Тут главный вопрос для чего именно?Ответ 4
Проверка полных ФИО с двойной Фамилией через тире (с учётом буквы Ё ё): /^[А-ЯЁ][а-яё]*([-][А-ЯЁ][а-яё]*)?\s[А-ЯЁ][а-яё]*\s[А-ЯЁ][а-яё]*$/ Проверка - Иванов-Фёдоров Пётр Сидорович и например для условия когда не менее 3 букв в Фамилии и Имени и Отчестве: /^[А-ЯЁ][а-яё]{2,}([-][А-ЯЁ][а-яё]{2,})?\s[А-ЯЁ][а-яё]{2,}\s[А-ЯЁ][а-яё]{2,}$/Ответ 5
Попробуй вот такую регулярку. А вообще для ФИО их лучше не использовать /^[А-Я][а-я]*([-][А-Я][а-я]*)?\s[А-Я][а-я]*\s[А-Я][а-я]*$/
Комментариев нет:
Отправить комментарий