Помогите с регуляркой для поиска телефонов
-
@DrPrime ну парсить ты будешь с одного сайта, значит там будет одинаковый код... а вообще проще было бы если скинешь ссылку на страницу... но то что я выше написал можно применить в любом случае
-
@DrPrime в любом случае в любом коде на любой странице будет примерно так код код код бла бла бла номер бла бла бла код код код... вот регуляркой вырезаешь бла бла бла номер бла бла бла.. а потом парсишь все цифры
-
@smurfik Парсинг будет на разных сайтах. Код вокруг номера разный
-
@DrPrime ну тогда сделай в меню выбор сайта - переключатель. и к каждому коду свой вариант событий
-
@DrPrime это будет проще, чем сделать универсальную регулярку
-
-
((8|+7)-?)?(?\d{3,5})?-?\d{1}-?\d{1}-?\d{1}-?\d{1}-?\d{1}((-?\d{1})?-?\d{1})? эта впринцыпе должна работать
-
@seedgg Спасибо, находил уже этот сайт, но почему то ни одна не работает в бас. Несколько возвращают только первую цифру, буду копаться дальше почему так
-
@DrPrime они и будут возвращать только одну цифру... потому что это очень геморная задача... сделай моим методом, и все будет хорошо. я не думаю что у тебя там список из 100 сайтов для парсинга
-
@smurfik из 3 х млн
-
@DrPrime said in Помогите с регуляркой для поиска телефонов:
@seedgg Спасибо, находил уже этот сайт, но почему то ни одна не работает в бас. Несколько возвращают только первую цифру, буду копаться дальше почему так
потому что там регулярки .NET формата, а нужны javascript.
-
@DrPrime тогда опиши что и для чего ты делаешь, потому что понять теперь точно невозможно.
-
@out Можешь помочь с переделкой из под js?
-
@DrPrime я бы сделал так, это проще и надежнее, чем городить regexp под все варианты.
в логе смотри[23:12:26] Поток №1 : Номеров найдено: 8
[23:12:26] Поток №1 : ["79999379992","89999379992","9999379992","9999379992","9999379992","9999379992","9999379992","9999379992"]
сделал такой говнокод, но рабочий
var potential_phones = VAR_SAVED_CONTENT.match(/\+?(7|8)?[\d\-\(\)\ ]+/g); var valid_phones = []; if (potential_phones != null) { var tmpV; potential_phones.forEach(function(item, i, arr) { tmpV = potential_phones[i].match(/\d+/g); if (tmpV != null) { tmpV = tmpV.join(""); if (tmpV.length > 9 && tmpV.length < 12) valid_phones.push(tmpV); } }); } if (valid_phones.length) { log("Номеров найдено: " + valid_phones.length); log(JSON.stringify(valid_phones)); } else { log("Номера не найдены."); }
сперва парсим все совпадения регуляркой
\+?(7|8)?[\d\-\(\)\ ]+
проходимся по всем совпадениям, берем одни только цифры, проверяем к-во цифр, если их от 10 до 11, то это моб телефон.так на вскидку, минус тут в том, что если в коде страницы будет просто "5555555555" то это тоже примется , как моб тел.
Но этот момент можно убрать, если в регулярку начальную прописать все мобильные операторы РУ, а лучше не в регулярку, а просто в массив, а дальше обработанные результаты парсинга уже сверить , начинается ли номер с кода моб оператора, тогда будет очень мало не валидных номеров.плюс метода в том, что он спарсит номера во многих форматах, а дальше уже приведет в чистый цифровой формат.
но метод таки придуман сходу и на коленке, на твоем исходном примере, так что нужно проверять на реальных данных и смотреть чего не хватает..
-
@out Спасибо
Сделал похожим образом, чуть регулярку другую сделал.((8|\+7)[- ]?[(]?\d{3}[)]?[- ]?[ ]?\d{1,3}[- ]?\d{1,3}[- ]?\d{1,3})
А потом проверка всех по длине.
Буде еще тестировать и твой вариант.
-
@DrPrime ок, только в моем коде измени на
if (valid_phones.length)
это я забыл. Пост отредактировал.
-
@out у меня похожая проблема.. только нужно пасить прокси со страницы .txt. с регуляркой что то не получилось у меня вообще. гет запрос, все одной строкой, просто получить текст через веб, тоже одной строкой. и хз как из 500 проксей взять один. длинна каждый раз разная, они обновляются вообщем на сайте нажимаешь посмотреть прокси, и открывается в новой вкладке страница с проксями. уже 3 часа сижу парюсь(
-
@smurfik вот пример с регуляркой, нормально со страницы парсит
Регулярка \d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}:\d{1,5}
-
@seedgg said in Помогите с регуляркой для поиска телефонов:
\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}:\d{1,5}
СЕЙЧАС ПОПРОБУЮ, СПАСИБО
-
@seedgg said in Помогите с регуляркой для поиска телефонов:
\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}:\d{1,5}
Спасибо огромное. работает. тоже сделал гет запрос и эта регулярка.