Какое регулярное выражение для проверки украинского номера телефона
Только чтоб такие номера проходили:
0991122334
80112233445
+380112233445
Такие варианты не верны:
+38011-22-33-445
+80112233445
+0112233445
380112233445
const regExp = /$/;
Ответы (1 шт):
Автор решения: another_login
→ Ссылка
Регулярное выражение, предложенное в комментарии, вероятно будет работать в лабораторных условиях (на Ваших данных), но при реальном пользовательском вводе:
const test_data = ['0991122334', '80112233445', '+380112233445', '+38011-22-33-445', '+80112233445', '+0112233445', '380112233445', '+311111111111', '+38012345678', '+390123456789', '1234567890'];
const regexp = /^(\+3|)[0-9]{10,11}$/;
for (const t of test_data) {
console.log(t, ' --- ', regexp.test(t));
}
По Вашему запросу регулярка такая:
const test_data = ['0991122334', '80112233445', '+380112233445', '+38011-22-33-445', '+80112233445', '+0112233445', '380112233445', '+311111111111', '+38012345678', '+390123456789', '1234567890'];
const regexp = /^(\+38|8)?0[0-9]{9}$/;
for (const t of test_data) {
console.log(t, ' --- ', regexp.test(t));
}
Но 80112233445 не похоже на валидную запись украинского номера (код страны +380) https://ru.wikipedia.org/wiki/Телефонный_план_нумерации_Украины#Проблемы_имплементации, это очень устаревший формат записи, если от него отказаться -- регулярка упрощается:
const test_data = ['0991122334', '80112233445', '+380112233445', '+38011-22-33-445', '+80112233445', '+0112233445', '380112233445', '+311111111111', '+38012345678', '+390123456789', '1234567890'];
const regexp = /^(\+38)?0[0-9]{9}$/;
for (const t of test_data) {
console.log(t, ' --- ', regexp.test(t));
}
И я бы, дополнительно, проверял коды операторов https://uk.wikipedia.org/wiki/Коди_мобільних_операторів_України#Коди_мобільних_операторів_України :
const test_data = ['0991122334', '80112233445', '+380112233445', '+38011-22-33-445', '+80112233445', '+0112233445', '380112233445', '+311111111111', '+38012345678', '+390123456789', '1234567890'];
const regexp = /^(\+38)?0(39|50|63|66|67|68|73|89|9[1-9])[0-9]{7}$/;
for (const t of test_data) {
console.log(t, ' --- ', regexp.test(t));
}