Метод isMobilePhone

Назначение и область применения

Метод isMobilePhone используется для проверки строкового значения на соответствие формату мобильного телефонного номера. Валидация выполняется с учётом страны или региона, поскольку формат телефонных номеров существенно отличается в зависимости от локали. Функция применяется в задачах проверки пользовательского ввода: регистрационные формы, профили, CRM-системы, сервисы доставки, банковские приложения.

Основная задача метода — определить, является ли переданная строка корректным мобильным номером в заданном формате, без привязки к реальному существованию номера.


Синтаксис

isMobilePhone(str [, locale [, options]])

str — проверяемое значение, приводимое к строке locale — код страны или массива кодов стран options — объект дополнительных настроек проверки

Возвращаемое значение: true — если строка соответствует формату мобильного номера false — если не соответствует


Поддерживаемые локали

Библиотека Validator.js поддерживает множество региональных форматов. Локаль определяет правила проверки.

Примеры популярных значений:

  • ru-RU — Россия
  • en-US — США
  • en-GB — Великобритания
  • de-DE — Германия
  • fr-FR — Франция
  • zh-CN — Китай

Также допускается передача массива локалей:

isMobilePhone('...', ['ru-RU', 'en-US'])

В этом случае проверка считается успешной, если номер соответствует хотя бы одному формату.


Параметр options

Объект options расширяет поведение проверки и позволяет уточнить правила анализа строки.

Основные параметры:

strictMode

{ strictMode: true }

При включённом строгом режиме допускаются только строго формализованные номера без пробелов, скобок и разделителей. Например:

  • допустимо: +79161234567
  • недопустимо: +7 (916) 123-45-67

При отключённом режиме допускаются различные визуальные форматы записи номера.


format

Некоторые реализации Validator.js поддерживают параметр format, ограничивающий тип допустимого номера:

  • mobile — только мобильные номера
  • fixedLine — стационарные номера
  • fixedLineOrMobile — любой из вариантов

Примеры использования

Проверка номера в одной локали

isMobilePhone('+79161234567', 'ru-RU')

Результат: true


Проверка нескольких локалей

isMobilePhone('+12025550123', ['ru-US', 'en-US'])

Результат зависит от соответствия формату хотя бы одной локали.


Строгий режим

isMobilePhone('+79161234567', 'ru-RU', { strictMode: true })
isMobilePhone('+7 (916) 123-45-67', 'ru-RU', { strictMode: true })

Во втором случае результат будет false из-за наличия пробелов и разделителей.


Обычный режим

isMobilePhone('+7 (916) 123-45-67', 'ru-RU')

Результат: true, поскольку допускается форматирование номера.


Особенности обработки входных данных

Перед проверкой значение приводится к строке. Это означает, что числовые типы автоматически преобразуются:

isMobilePhone(79161234567, 'ru-RU')

Фактически обрабатывается строка "79161234567".

Пробелы в начале и конце строки не влияют на результат, так как выполняется предварительная нормализация.


Поведение при некорректных данных

Метод возвращает false в следующих случаях:

  • строка содержит недопустимые символы (буквы, спецсимволы вне допустимого формата)
  • номер не соответствует национальному плану нумерации
  • передана неподдерживаемая локаль
  • значение пустое или не может быть интерпретировано как телефонный номер

Отличие от других методов валидации

В библиотеке Validator.js существуют близкие методы:

  • isNumeric — проверяет только наличие цифр
  • isMobilePhone — учитывает структуру телефонного номера
  • isPhoneNumber (в некоторых версиях/расширениях) — более общий формат проверки

Ключевое отличие isMobilePhone заключается в привязке к мобильному формату конкретной страны, а не к абстрактному числовому значению.


Поддержка международного формата E.164

Во многих случаях используется формат E.164:

+<код страны><номер>

Пример:

+79161234567

Метод способен распознавать такие номера при корректной локали. Однако наличие символа + не является универсальным требованием — оно зависит от настроек и региона.


Практическое поведение в системах валидации

В серверных и клиентских приложениях метод часто используется в составе цепочек проверок:

  • обязательность поля (combined with isEmpty)
  • проверка длины строки
  • нормализация ввода
  • последующая проверка на уникальность в базе данных

isMobilePhone не гарантирует существование номера, а только его соответствие формату.


Ограничения метода

Метод имеет ряд ограничений, связанных с природой телефонной нумерации:

  • невозможна проверка фактического существования номера
  • возможны ложноположительные результаты при устаревших форматах
  • изменения национальных стандартов нумерации могут требовать обновления библиотеки
  • некоторые региональные особенности могут быть упрощены

Влияние локализации на результат

Локаль напрямую определяет строгие правила проверки. Один и тот же номер может быть:

  • корректным в одной стране
  • некорректным в другой

Например:

+4915123456789

Может быть валидным для Германии, но не пройти проверку для США.


Использование с пользовательским вводом

При обработке данных из форм важно учитывать:

  • наличие масок ввода
  • автоматическое добавление пробелов и символов
  • конвертацию международных форматов

isMobilePhone работает корректно только после минимальной нормализации строки.


Типичные сценарии применения

  • регистрация пользователей по телефону
  • проверка контактных данных в CRM
  • формы заказа доставки
  • валидация контактной информации в банковских системах
  • фильтрация входящих данных API

Поведение при массиве локалей

При передаче массива локалей проверка выполняется последовательно:

  1. строка проверяется по первой локали
  2. при неудаче — по следующей
  3. результат считается успешным при первом совпадении

Это позволяет реализовывать гибкие мульти-региональные системы ввода.


Итоговая логика работы метода

Функция выполняет следующие этапы:

  • преобразование входного значения в строку
  • нормализация формата
  • выбор правил по локали
  • проверка соответствия мобильному формату
  • возврат булевого результата