Какое регулярное выражение для проверки украинского номера телефона

Только чтоб такие номера проходили: 
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));
}

→ Ссылка