Проверка номеров телефонов в формате E.164 в React Native: подробное руководство

Проверка номера телефона — важная задача во многих приложениях, гарантирующая, что пользователи предоставляют свои номера телефонов в стандартизированном формате. В этой статье мы рассмотрим различные методы проверки соответствия номера телефона формату E.164 в приложении React Native. Мы рассмотрим различные подходы, включая регулярные выражения и пакеты npm, и предоставим примеры кода для каждого метода.

Метод 1. Регулярные выражения.
Регулярные выражения — это мощный инструмент сопоставления с образцом, что делает их идеальными для проверки телефонных номеров. Вот пример того, как использовать регулярное выражение, чтобы проверить, находится ли номер телефона в формате E.164 в React Native:

const isValidE164 = (phoneNumber) => {
  const regex = /^\+[1-9]\d{1,14}$/;
  return regex.test(phoneNumber);
};
// Usage
const phoneNumber = "+1234567890";
console.log(isValidE164(phoneNumber)); // Output: true

Метод 2. Библиотеки форматирования номеров телефонов.
Другой подход заключается в использовании пакетов npm, которые обеспечивают функции форматирования и проверки номеров телефонов. Один из популярных пакетов — libphonenumber-js. Вот пример использования этой библиотеки для проверки номера телефона в формате E.164:

import { isValidNumber } from 'libphonenumber-js';
const isValidE164 = (phoneNumber) => {
  try {
    const parsedNumber = isValidNumber(phoneNumber);
    return parsedNumber && parsedNumber.isPossible();
  } catch (error) {
    return false;
  }
};
// Usage
const phoneNumber = "+1234567890";
console.log(isValidE164(phoneNumber)); // Output: true

Метод 3: пользовательская логика проверки.
Если вы предпочитаете более индивидуальный подход, вы можете вручную реализовать собственную логику проверки, чтобы проверить, соответствует ли номер телефона формату E.164. Такой подход позволяет вам иметь детальный контроль над процессом проверки. Вот пример:

const isValidE164 = (phoneNumber) => {
  const countryCode = phoneNumber.slice(0, 2);
  const phoneNumberWithoutCountryCode = phoneNumber.slice(2);
  // Check if the country code is valid
  const validCountryCodes = ['1', '91', '44']; // Add more country codes if needed
  if (!validCountryCodes.includes(countryCode)) {
    return false;
  }
// Check if the remaining digits are numeric
  if (!/^\d+$/.test(phoneNumberWithoutCountryCode)) {
    return false;
  }
// Add more custom validation rules if required
  return true;
};
// Usage
const phoneNumber = "+1234567890";
console.log(isValidE164(phoneNumber)); // Output: true

Проверка номеров телефонов в формате E.164 имеет решающее значение для обеспечения согласованности и точности данных в ваших приложениях React Native. В этой статье мы рассмотрели три различных метода: использование регулярных выражений, использование библиотек форматирования номеров телефонов, таких как libphonenumber-js, и реализацию пользовательской логики проверки. Выберите метод, который лучше всего соответствует вашим потребностям, и интегрируйте его в свое приложение для эффективной проверки номеров телефонов.

Следуя этим методам, вы можете гарантировать, что телефонные номера, предоставленные пользователями, соответствуют формату E.164, что повышает надежность и удобство использования вашего приложения React Native.