Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.07.2015, 10:44
Аспирант
Отправить личное сообщение для SKLNSK Посмотреть профиль Найти все сообщения от SKLNSK
 
Регистрация: 27.02.2015
Сообщений: 66

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

Есть многострочный текст в котором есть номера телефонов. Их надо найти и скопировать в массив.

Я попробовал найти хотя бы начало +7 и 8 телефонов +79131231111 и 89131231111, например из текста "+79131231111\n89131231111\n89131231111".

Но возвращает null.

var str= '+79131231111\n89131231111\n89131231111';
var re= /(8\|+7)/g;
alert('массив номеров: ' +re.exec(str));
Ответить с цитированием
  #2 (permalink)  
Старый 28.07.2015, 10:45
Аспирант
Отправить личное сообщение для SKLNSK Посмотреть профиль Найти все сообщения от SKLNSK
 
Регистрация: 27.02.2015
Сообщений: 66

И есть ли сервис где онлайн можно js проверять?
Ответить с цитированием
  #3 (permalink)  
Старый 28.07.2015, 10:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А если в тексте будет просто 88 или +7?
Ответить с цитированием
  #4 (permalink)  
Старый 28.07.2015, 10:54
Аспирант
Отправить личное сообщение для SKLNSK Посмотреть профиль Найти все сообщения от SKLNSK
 
Регистрация: 27.02.2015
Сообщений: 66

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

вот этот код я думал что выберет мне все цифры, а он две семерки через запятую выводит. странно в тексте только одна семерка
var str= '+7\n88\n88';
var re= /(\d)/gi;
alert('массив номеров: ' +re.exec(str));
Ответить с цитированием
  #5 (permalink)  
Старый 28.07.2015, 10:56
Аспирант
Отправить личное сообщение для SKLNSK Посмотреть профиль Найти все сообщения от SKLNSK
 
Регистрация: 27.02.2015
Сообщений: 66

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

Если без скобок, то одну семерку выводит.
var str= '+7\n88\n88';
var re= /\d/gi;
alert('массив номеров: ' +re.exec(str));
Ответить с цитированием
  #6 (permalink)  
Старый 28.07.2015, 10:57
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

чем вас не устраивает скрипт, который есть здесь:
https://learn.javascript.ru/regexp-m...egexp-exec-str
?
https://www.google.ru/webhp?q=regex+...q=regex+online
Ответить с цитированием
  #7 (permalink)  
Старый 28.07.2015, 10:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Найти числа и + а за ним числа не проблематично, но тут вопрос о содержании текста, а что если в нем будет наряду с номерами и просто числа начинающиеся с 8: 812, 80, 81...? То есть надо определиться - что конкретно ищем, задать еще некое условие, например длину номера, и это при условии, что номера пишутся без форматирования, то есть пробелов, дефисов, скобок.
Ответить с цитированием
  #8 (permalink)  
Старый 28.07.2015, 11:03
Аспирант
Отправить личное сообщение для SKLNSK Посмотреть профиль Найти все сообщения от SKLNSK
 
Регистрация: 27.02.2015
Сообщений: 66

Сообщение от EmperioAf Посмотреть сообщение
чем вас не устраивает скрипт, который есть здесь
А что там есть? Не вижу примера, как выбирать номера из строки.
Ответить с цитированием
  #9 (permalink)  
Старый 28.07.2015, 11:07
Аспирант
Отправить личное сообщение для SKLNSK Посмотреть профиль Найти все сообщения от SKLNSK
 
Регистрация: 27.02.2015
Сообщений: 66

Сообщение от laimas Посмотреть сообщение
Найти числа и + а за ним числа не проблематично, но тут вопрос о содержании текста, а что если в нем будет наряду с номерами и просто числа начинающиеся с 8: 812, 80, 81...? То есть надо определиться - что конкретно ищем, задать еще некое условие, например длину номера, и это при условии, что номера пишутся без форматирования, то есть пробелов, дефисов, скобок.
Я по началу хотел бы более простую задачу решить - найти все номера, которые идут +7.... и 8.... сплошными цифрами. Потом научиться убирать скобки и прочий мусор. Длина номеров 11 цифр - федеральный и 7 цифр - городской.

Т.е. необходимо из многострочного текста найти все номера 11-значные, начинающиеся с +7 или 8. и 7-значные. Найденные номера поместить в массив.
Ответить с цитированием
  #10 (permalink)  
Старый 28.07.2015, 11:19
Аспирант
Отправить личное сообщение для SKLNSK Посмотреть профиль Найти все сообщения от SKLNSK
 
Регистрация: 27.02.2015
Сообщений: 66

А ну да + выводит остальные символы в строке, но по другим строкам не ищет. надо еще что-то добавить

var str= '+79131231111 lдоб. 105\n89131231111\n89131231111';
var re= /[0-9]+/gi;
alert('массив номеров: ' +re.exec(str));


вот эта статья помогла понять этот момент http://dreamhelg.ru/2010/02/15-regul...eb-developers/

и так массив не получается сделать
var str= '+79131231111 lдоб. 105 89131231122\n89131231133';
var re= /\d+/gm;
rez= re.exec(str)
alert('массив номеров: ' +rez[0]+' / '+rez[1]);

Последний раз редактировалось SKLNSK, 28.07.2015 в 11:49.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Борьба с регулярными выражениями raler jQuery 4 24.12.2013 20:03
Проблема с регулярными выражениями lexon Общие вопросы Javascript 2 27.06.2012 22:15
Функции для работы с регулярными выражениями Joshka Общие вопросы Javascript 5 21.06.2011 00:00
Замена с регулярными выражениями stqel Общие вопросы Javascript 4 23.08.2010 09:58
помогите с регулярными выражениями igsavenko Общие вопросы Javascript 2 21.08.2010 17:47