Метод 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 расширяет поведение проверки и позволяет
уточнить правила анализа строки.
Основные параметры:
{ strictMode: true }
При включённом строгом режиме допускаются только строго формализованные номера без пробелов, скобок и разделителей. Например:
+79161234567+7 (916) 123-45-67При отключённом режиме допускаются различные визуальные форматы записи номера.
Некоторые реализации 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:
+<код страны><номер>
Пример:
+79161234567
Метод способен распознавать такие номера при корректной локали.
Однако наличие символа + не является универсальным
требованием — оно зависит от настроек и региона.
В серверных и клиентских приложениях метод часто используется в составе цепочек проверок:
isEmpty)isMobilePhone не гарантирует существование номера, а
только его соответствие формату.
Метод имеет ряд ограничений, связанных с природой телефонной нумерации:
Локаль напрямую определяет строгие правила проверки. Один и тот же номер может быть:
Например:
+4915123456789
Может быть валидным для Германии, но не пройти проверку для США.
При обработке данных из форм важно учитывать:
isMobilePhone работает корректно только после
минимальной нормализации строки.
При передаче массива локалей проверка выполняется последовательно:
Это позволяет реализовывать гибкие мульти-региональные системы ввода.
Функция выполняет следующие этапы: