@UserTrue
Когда искал по форуму, часто встречал ответы этого пользователя. Если найдется минутка, поделитесь опытом. Пока выделил два возможных решения замены curl http. Может есть еще варианты? Какой вариант для вас лучше?
Помогите с регуляркой для поиска телефонов
-
@DrPrime said in Помогите с регуляркой для поиска телефонов:
@seedgg Спасибо, находил уже этот сайт, но почему то ни одна не работает в бас. Несколько возвращают только первую цифру, буду копаться дальше почему так
потому что там регулярки .NET формата, а нужны javascript.
-
@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 у меня похожая проблема.. только нужно пасить прокси со страницы .txt. с регуляркой что то не получилось у меня вообще. гет запрос, все одной строкой, просто получить текст через веб, тоже одной строкой. и хз как из 500 проксей взять один. длинна каждый раз разная, они обновляются вообщем на сайте нажимаешь посмотреть прокси, и открывается в новой вкладке страница с проксями. уже 3 часа сижу парюсь(
-
@smurfik точку лучше экранировать, без этого это не точка, а "любой символ". И порт вряд ли будет только с 1й цифрой.
\b(\d{1,3}\.){3}\d{1,3}:\d{2,5}\b
или
(\d{1,3}\.){3}\d{1,3}:\d{2,5}зависит от ситуации, нужно прикладывать кусок исходного кода для примера. -
@DrPrime said in Помогите с регуляркой для поиска телефонов:
Спасибо, находил уже этот сайт, но почему то ни одна не работает в бас. Несколько возвращают только первую цифру, буду копаться дальше почему так
БАС возвращает первую группу(то что в скобках), или все віражение если групп нет, чтобы избежать этого нужно использовать группы без захвата
(?:8|+7)вместо(8|+7)итд
