@teslenko2603 said in Помогите с регулярным:
О круто! Спасибо. И еще такой оффтоп: в БАСе можно записывать в файл спец.символы? интересует именно Табуляция
да
<TAB> не работает...
найдите табуляцию, скопируйте и вставьте в скрипт
@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) итд