Перевірка телефонних номерів за допомогою регулярних виразів

Мова: Українська
Цю статтю перекладено з англійської за допомогою ШІ, тому вона може містити помилки. Ваші відгуки допоможуть нам її покращити.

Регулярні вирази — це потужні інструменти для опису шаблонів у тексті, зокрема телефонних номерів. Ви можете використовувати цю функцію для перевірки правильності формату зібраного номера телефону.

У цьому посібнику ми крок за кроком розглянемо, як створити регулярний вираз для перевірки зібраних телефонних номерів.

Розуміння домену

Перш ніж писати регулярний вираз, важливо зрозуміти очікуваний формат тексту. У цьому прикладі ми розглянемо перевірку номерів мобільних телефонів з Демократичної Республіки Конго (ДРК).

У ДРК схема нумерації для мобільних телефонів є наступною:

  • Vodacom: 81X XXX XXX або 82X XXX XXX
  • Supercell: 80X XXX XXX
  • Congo-Chine Telecom: 84X XXX XXX
  • Celltell: 97X XXX XXX, 98X XXX XXX. або 99X XXX XXX

Де "X" — це будь-яка цифра від 0 до 9.

Ми можемо використовувати наведені вище шаблони, щоб написати правило валідації, яке перевіряє дійсний номер мобільного телефону.

Простий регулярний вираз

Почнемо зі збігу з номерами Vodacom. Кожен мобільний номер Vodacom починається з "81" або "82" та ще однієї цифри, а потім дві групи по три цифри:

REGEXMATCH(PHONE_NUMBER, "8[12][0-9] [0-9][0-9][0-9] [0-9][0-9][0-9]")

Тут ми використовуємо нотацію класу символів, щоб вказати діапазон символів:

  • [12] відповідає "1" або "2"
  • [0-9] відповідає будь-якому символу між "0" та "9"

Ми можемо скоротити цей вираз, використовуючи класи символів, що повторюються:

REGEXMATCH(PHONE_NUMBER, "8[12][0-9] [0-9]{3} [0-9]{3}")

{3} вказує, що попередній символ повинен збігатися рівно три рази.

Зіставлення будь-якого мобільного оператора

Основна відмінність між різними операторами полягає в першій групі цифр:

Оператор Шаблон першої групи
Vodacom 8[12][0-9]
Supercell 80[0-9]
Congo-Chine 84[0-9]
Celltell 9[789][0-9]

Ми можемо зіставити будь-якого з вищезазначених операторів, згрупувавши їх за допомогою дужок і використовуючи оператор "pipe" (|) для визначення альтернатив:

REGEXMATCH(PHONE_NUMBER, "((8[12][0-9])|(80[0-9])|(84[0-9])|(9[789][0-9])) [0-9]{3} [0-9]{3}")

Насправді, єдина відмінність між першими трьома операторами — це друга цифра, тому ми можемо ще більше спростити:

REGEXMATCH(PHONE_NUMBER, "((8[0124][0-9])|(9[789][0-9])) [0-9]{3} [0-9]{3}")

Однак, це буде відповідати номеру телефону, де б він не з'являвся в тексті. Отже, "801 343 933" збігатиметься, але так само збігатиметься і "TEL: 801 343 933". Ми б хотіли, щоб у текстове поле вводився лише номер телефону, тому ми можемо використовувати символ ^, щоб вимагати збігу на початку поля, і $ — щоб вимагати збігу в кінці:

REGEXMATCH(PHONE_NUMBER, "^((8[0124][0-9])|(9[789][0-9])) [0-9]{3} [0-9]{3}$")

Обчислення назви мобільного оператора

Ми також можемо використовувати регулярний вираз для обчислення назви мобільного оператора з номера телефону, використовуючи функцію IF разом з функцією REGEXMATCH:

IF(REGEXMATCH(PHONE_NUMBER, "^8[12][0-9]"), "Vodacom",
 IF(REGEXMATCH(PHONE_NUMBER, "^80[0-9]"), "Supercell",
   IF(REGEXMATCH(PHONE_NUMBER, "^84[0-9]"), "Congo-Chine",
     IF(REGEXMATCH(PHONE_NUMBER, "^9[789][0-9]"), "Celltell", "Other"))))

Створення форми

Тепер, коли у нас є дві формули, ми можемо додати форму збору даних в ActivityInfo.

Додати форму

  1. Перейдіть до вашої бази даних.
  2. Натисніть "Додати форму"
  3. Введіть назву форми "Registration"

Додайте поле для номера телефону

  1. Додайте текстове поле з назвою "Phone Number" та кодом PHONE_NUMBER.
  2. Поставте прапорець "Встановіть правила перевірки"
  3. Вставте наведену вище формулу валідації у вікно правил валідації або відкрийте редактор формул
Знімок екрана поля номера телефону
Знімок екрана поля номера телефону

Додайте поле мобільного оператора

  1. Додайте обчислюване поле під назвою "Mobile Provider"
  2. У редакторі формул вставте вищенаведений оператор IF.
Знімок екрана поля мобільного оператора
Знімок екрана поля мобільного оператора

Тестування форми

Коли ви відкриваєте форму для введення даних, введення номера телефону, який не відповідає формату ДРК, має призвести до помилки валідації:

Знімок екрана форми з помилкою валідації
Знімок екрана форми з помилкою валідації

Коли введені дані збігаються, поле проходить перевірку, а обчислюване поле показує правильного мобільного оператора:

Знімок екрана дійсної форми
Знімок екрана дійсної форми

Ви можете спробувати форму самостійно.

Наступний елемент
Перевірка систем письма