javascript регулярные выражения телефон

Содержание

Проверка адреса email и номера телефона на javascript

Предоставляя пользователю возможность заполнения полей на сайте, следует проверять введенные данные на валидность. Это позволит предупредить пользователя о случайных ошибках, а так же даст дополнительную защиту от спама. Ярким примером является форма обратной связи, обязательными полями которой часто бывают email и телефон. Займемся их проверкой на правильность заполнения с помощью javascript.

Информация лучше воспринимается на примерах, поэтому посмотрим готовую форму в действии:

Пожалуйста, заполните все поля формы!

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

Валидность адреса электронной почты

Составим регулярное выражение для наших требований:

Разберём правило по частям:

Разобранный пример немного упрощен для лучшего восприятия. У него есть недостаток — первым знаком в email не может быть тире или точка, но приведенное регулярное выражение этого не учитывает. Чтобы это исправить следует его немного поправить:

Проверка валидности номера телефона в javascript

С номером телефона ситуация сложнее, так как номер можно ввести десятками способов:

Есть несколько выходов из ситуации:

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

Для любителей жестких шаблонов приведу пример проверки номера вида 8 (999) 123-45-64

Исходный код примера: html и javascript

Это полный код тестовой странички, на которой я использовал форму и js скрипты для отладки правил из этой статьи. Можете скопировать его и протестировать у себя на компьютере.

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

Источник

Форматирование номеров телефона с помощью регулярных выражений

picture 1264 1438035614

Такая элементарная вещь, как номер телефона, в письменных текстах живёт во множестве вариантов. Обыкновенный номер типа +7 (123) 123-45-67 можно встретить записанным без скобок или дефисов ( +7 123 1234567 ), а то и вообще без пробелов ( +71231234567 ). Не собираюсь оскорблять чувства пишущих, им и так непросто. Но уважающий себя веб-ресурс не может допустить такой типографической разношёрстности. Плюс к тому, необлагороженные номера неудобно читать человеку (то самое human-readable).

Данная статья о том, как привести все телефонные номера на странице к однообразному виду, а также проставить корректные ссылки типа tel: на них. Для решения поставленной задачи используются регулярные выражения JavaScript. Хороший обзор регэкспов дан здесь, также почитать по теме можно на MDN.

Найти все телефонные номера на странице можно таким способом:

Метод match() вернёт и запишет в переменную phoneNumbers массив (объект типа Array ) со всеми найденными на странице номерами.

Дисклеймер. Виденное выше регулярное выражение может вызвать сильное чувство боли в глазах у неподготовленного читателя. Если вы не очень знакомы с регулярками, автор всё-таки советует для начала проработать несколько первых глав учебника на LearnJavascript.

Разберём это выражение:

То есть, фактически, эти части паттерна распознают первые три цифры после кода страны, причём как взятые в скобки, так и без (квантификатор * синонимичен <0,>и означает «либо ноль, либо сколько угодно»).

Ну хорошо, найти все номера получилось. К сожалению, задача этим не исчерпывается. Как же взять и заменить все вхождения разом?

Но ведь у нас задача сложнее: нельзя же заменить разные номера телефонов на один! Тут самое время вспомнить о скобочных группах.

Скобочная группа — термин из теории регулярных выражений. Технически это просто часть паттерна, взятая в скобки. Но к любой такой группе можно обратиться по индексу.

То была идея, а теперь реализация:

В результате будет выведен аккуратный, каноничный телефонный номер. Работает!

Теперь, чтобы заменить все найденные номера телефонов на единообразные, добавим флаг g :

То есть, для корректной работы ссылки нужно в её коде выписать все цифры номера подряд — как раз самый неудобный для чтения человеком вариант.

Источник

Проверка номера телефона с помощью JavaScript

Я нашел этот код на каком-то сайте, и она прекрасно работает. Он подтверждает, что номер телефона находится в одном из следующих форматов:
(123) 456-7890 или 123-456-7890

проблема в том, что мой клиент (я не знаю, почему, может быть, клиент питания) хочет добавить другой формат, десять чисел последовательно, что-то вроде этого: 1234567890.

Я использую это регулярное выражение,

Как добавить что это также подтверждает другой формат? Я не силен в регулярных выражениях.

23 ответов

во-первых, ваш валидатор формата, очевидно, подходит только для NANP (код страны +1) чисел. Будет ли ваше приложение использоваться кем-то с номером телефона из-за пределов Северной Америки? Если это так, вы не хотите препятствовать этим людям вводить совершенно действительный [международный] номер.

Итак, ваше регулярное выражение передаст номер (123) 123 4566, даже если это не действительный номер телефона. Вы можете исправить это, заменив \d <3>С 4<1>\d <2>.

наконец, я чувствую, что вы проверяете ввод пользователя в веб-браузере. Помните, что проверка на стороне клиента только a удобство вы предоставляете пользователю; вам все равно нужно проверить все входные данные (снова) на сервере.

мое регулярное выражение выбора:

(123) 456-7890
(123)456-7890
123-456-7890
123.456.7890
1234567890
+31636363634
075-63546725

Я бы проигнорировал формат и проверил числовое содержимое:

следующее регулярное выражение будет проверять любой из этих форматов:

(123) 456-7890
123-456-7890
123.456.7890
1234567890

Javascript анализатор телефонных номеров с метаданными для более чем 200 стран: https://github.com/googlei18n/libphonenumber

это очень свободный вариант, и я предпочитаю держать его таким образом, в основном я использую его в регистрационных формах, где пользователям нужно добавить свой номер телефона. Обычно пользователи имеют проблемы с формами, которые обеспечивают строгие правила форматирования, я предпочитаю, чтобы пользователь заполнял номер и формат его на дисплее или перед сохранением в базе данных. http://regexr.com/3c53v

где str может быть любым из этих formarts: 555-555-5555 (555)555-5555 (555) 555-5555 555 555 5555 Пять миллиардов пятьсот пятьдесят пять миллионов пятьсот пятьдесят пять тысяч пятьсот пятьдесят пять 1 555 555 5555

Я бы предложил использовать что-то более четкое (особенно думая, кому придется поддерживать код). как насчет:

это будет работать:

это регулярное выражение проверяет следующий формат:

все ответы отличные, но вот один, я думаю, немного более полный.

это написано для использования javascript match одного числа в одной строке:

Я приветствую любые предложения, исправления или критику этого решения. Насколько я могу судить, это соответствует формату NANP (для номеров США-я не проверял другие североамериканские страны при создании этого), избегает любых ошибок 911 (не может быть в коде области или коде региона), устраняет только те 555 номеров, которые на самом деле недействительны (код региона 555 с последующим 01xx, где x = любое число).

это проверит любой номер телефона переменного формата:

\(?\d<3>\)? находит 3 цифры, заключенные в скобки или нет.

([\-\s\.])? находит любой из этих символов-разделителей или нет

использует первый согласованный разделитель-это гарантирует, что разделители одинаковы. Поэтому (000) 999-5555 не будет проверять здесь, потому что есть разделитель пробелов и тире, поэтому просто удалите «\1 » и замените его подшаблон разделителя (это также будет проверять нестандартные форматы). Тем не менее, вы должны быть формат, намекающий на ввод пользователя в любом случае.

BTW это для JavaScript, следовательно, для двойного побега.

Я должен согласиться, что проверка телефонных номеров является сложной задачей. Что касается этой конкретной проблемы, я бы изменил регулярное выражение с

поскольку единственным элементом, который становится ненужным, является последний тире / пробел.

хотя этот пост старый, но хочу оставить свое содействие. эти принимаются: Пять миллиардов пятьсот пятьдесят пять миллионов пятьсот пятьдесят пять тысяч пятьсот пятьдесят пять 555-555-5555 (555)555-5555 1(555)555-5555 1 555 555 5555 1 555-555-5555 1 (555) 555-5555

это код, который я использовал:

Если вы используете на тег input, чем этот код поможет вам. Я пишу этот код, я думаю, что это очень хороший способ использовать во входных данных. но вы можете изменить его, используя свой формат. Это поможет пользователю исправить их формат на тег input.

простое регулярное выражение: /\b\d<3>[-.]?\d<3>[-.]?\d<4>\b/g

Проверьте формат, надеюсь, он работает:
444-555-1234
f:246.555.8888
m: 1235554567

просто хотел добавить решение специально для выбора нелокальных телефонных номеров (800 и 900 типов).

Google имеет хорошую библиотеку для обработки телефонных номеров в JavaScript: https://github.com/googlei18n/libphonenumber. Работает также с Java и C++.

Я бы предпочел использовать их, потому что этот должен быть действительно хорошо протестирован в производстве. Так что это должно быть безопасно для ретрансляции.

эта функция работала для нас хорошо:

Источник

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

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

Пользовательские данные

1. Юзернейм

2. Валидация email

Проверка адреса электронной почты на корректность – одна из самых частых задач веб-разработчика. Без этого не обходятся ни разнообразные формы подписки, ни авторизация.

Для валидации email существует множество различных регулярок. Вот одна из них – не самая большая и не самая сложная, но достаточно точная для быстрой проверки адреса:

Что используем:
Флаг i в регулярных выражений обеспечивает регистронезависимость сравнения.

3. Номер телефона

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

4. Надёжность пароля

Часто встречаете на различных сервисах требование придумать сложный пароль? Кто и как определяет требуемую степень сложности? На самом деле, для этого есть некоторые стандарты: минимальная длина, разный регистр символов, наличие букв, цифр и специальных знаков.

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

Подробнее о надежности паролей вы можете узнать из этого руководства.

5. Почтовый индекс (zip-code)

Формат почтового индекса, как и телефона, зависит от конкретного государства.

В России все просто: шесть цифр подряд без разделителей.

Американский zip-code может состоять из 5 символов или в расширенном формате ZIP+4 – из 9.

6. Номер кредитной карты

Разумеется, при проверке номера платежной карты не стоит полагаться на регулярные выражения. Однако с их помощью вы можете сразу же отсеять очевидно неподходящие последовательности и не нагружать сервер лишним запросом.

С помощью вот такой длинной регулярки вы можете поддерживать сразу несколько платежных систем:

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

Что используем:
Вертикальная черта | в регулярных выражениях обозначает альтернацию, то есть выбор одного варианта из нескольких.

Распространенные форматы

7. Начальные и конечные пробелы

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

Что используем:
Квантификатор + соответствует инструкции <1,>– один и более символов.

8. Дата

С датами приходится работать очень часто, а форматов записи у них великое множество. Прежде чем начинать обработку, имеет смысл проверить, соответствует ли вид переданной строки требуемому.

Вот такое регулярное выражение поддерживает несколько форматов дат – с полными и краткими числами (5-1-91 и 05-01-1991) и разными разделителями (точка, прямой или обратный слеш).

Здесь учитываются даже високосные годы!

9. IPv4

Адрес IP используется для идентификации конкретного компьютера в интернете Он состоит из четырех групп цифр (байтов), разделенных точками (192.0.2.235).

Что используем:
Класс \b означает «границу слова» и имеет нулевую ширину (то есть это не отдельный символ).

10. IPv6

IPv6 – это новый, более сложный синтаксис IP-протокола. Выражение для проверки на этот формат выглядит куда страшнее, хотя на самом деле разница заключается только в поддержке шестнадцатеричных чисел:

11. Base64

Base64 – достаточно распространенный формат кодирования бинарных данных, который часто используется, например, в email-рассылках.

Для валидации строки в этом формате можно использовать следующее регулярное выражение:

12. ISBN

ISBN – международная номенклатура для печатных книг. Номер может состоять из 10 (ISBN-10) или 13 цифр (ISBN-13). На самих книгах ISBN обычно разделен дефисами на несколько групп (код страны, издательства и самой книги), но для проверки и использования их следует удалять.

Это регулярное выражение позволяет проверить оба формата сразу:

Числа

13. Проверка на число

Очень простая проверка строки на число с помощью регулярок:

14. Разделитель разрядов

Задача разбить большое число на разряды по три цифры встречается в разработке довольно часто. Оказывается это очень легко сделать с помощью регулярок.

15. Цена

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

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

Что используем:
Комбинация <2>означает, что символ из диапазона 9 должен быть повторен ровно 2 раза (дробная часть цены).

Файлы и URL

16. Сопоставить строку URL

Если вам необходимо проверить, является ли полученная строка URL-адресом, вы можете воспользоваться вот такой регуляркой:

Она подойдет для адресов с различными протоколами (HTTP, HTTPS, FTP) и даже без протокола.

17. Извлечение домена

В URL-адресе много частей: протокол, домен, поддомены, путь к странице и строка запроса. С помощью регулярок можно отбросить все лишнее и получить только домен:

Что используем:
Метод match возвращает объект с данными совпадения. Под индексом 1 в нем хранится совпадение, соответствующее первой скобочной группе.

18. Расширения

Одна строчка регулярного выражения позволяет быстро и просто получить расширение файла, с которым вам предстоит работать:

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

19. Протокол

Иногда требуется извлечь протокол полученной ссылки. Регулярные выражения и тут облегчают жизнь:

Социальные сети

20. Twitter

Имя пользователя Twitter:

21. Facebook

URL аккаунта на Facebook:

22. YouTube

Получение ID видео на YouTube:

Что используем:
Метод exec объекта регулярного выражения работает почти так же, как метод match строки.

HTML и CSS

23. HEX-цвета

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

24. Адрес изображения

25. CSS-свойства

Еще одна нетривиальная ситуация – получение свойств CSS с помощью регулярных выражений:

Что используем:
Флаг m в регулярных выражениях включает многострочный режим.

26. HTML комментарии

А это очень полезная регулярка для удаления комментариев из HTML-кода:

27. Title

Получить заголовок веб-страницы можно с помощью такого регулярного выражения:

28. rel=«nofollow»

Эта регулярка выбирает в тексте все ссылки с протоколом http/https без атрибута rel и добавляет его.

29. Медиа запросы

Если требуется проанализировать медиа-запросы CSS, воспользуйтесь этой регуляркой:

Что используем:
Класс \s обозначает пробельный символ (а также таб и перевод строки), а класс \S – наоборот, любой символ кроме пробельного.

30. Подсветка слов

Полезное выражение для поиска и выделения слов в тексте:

Разумеется, слово ipsum можно заменить на любое другое слово или словосочетание

Другие задачи веб-разработчика

31. Проверка версии Internet Explorer

К счастью, старый добрый IE постепенно уходит в прошлое, но он все же еще играет некоторую роль в современном вебе. Этот фрагмент кода позволяет определить версию всеми любимого браузера:

32. Удалить повторы

Регулярки дают возможность автоматически удалить случайные повторы слов без проглядывания всего текста:

33. Количество слов

Порой веб-разработчику необходимо определить количество слов в строке, например, для организации ключевых слов в инструментах аналитики. Сделать это можно с помощью следующих регулярок:

Источник

Шаблон для номера телефона

Всем привет. У меня такой вопрос кто-нибудь знает RegExp шаблон для номера телефона (СНГ)? Желательно чтобы умел разбирать:

Буду рад любой помощи.

P.S. Пишу на JavaScript

3 ответа 3

Решил сделать так. Сначало отсеить все нецифровые значения номера, исключения сделать только для всяких скобо, дефисов, пробелов и т.д.

Потом привести их все к нормальному виду. Например вот так:

Ориентировано на российские мобильные + городские с кодом из 3 цифр (например, Москва). Пропускает:

RDURc

Пользуюсь давно вот этой регуляркой и очень рад:

photo

Всё ещё ищете ответ? Посмотрите другие вопросы с метками регулярные-выражения javascript или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.10.8.40416

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник

Telefonu.top - справочник телефонных номеров
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии