powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите с написанием регулярки
15 сообщений из 15, страница 1 из 1
Помогите с написанием регулярки
    #38776100
Kreol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую!
Ребят помогите пожалуйста написать универсальное регулярное выражение для вариаций телефонов (это доля телефонов для стран Саудовской Аравии)
Кто как хочет так и пишет поэтому сложно описывать все.
0014023224433
+966509710198
(966)509710198
(966) 509710198
+0966509710198
00201008069377
532 532 0550
4242-3939-05
4-2-4-2-3-9-3-9-0-5
0127366318
0020171876161
Также могут использоваться и другие разделители типа ! или * (4*2*4*2*3*9*3*9*0*5)
Вся эта лабудень находится в общем коде, поэтому привязки к началу и концу почти нет.
Буду признателен за помощь.
...
Рейтинг: 0 / 0
Помогите с написанием регулярки
    #38776267
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kreol,

что-то типа "[\d|\s\(\)+!*\-]{10,23}[,\s\n]" ?
...
Рейтинг: 0 / 0
Помогите с написанием регулярки
    #38776328
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kreol,

Будет проще, если удалить все "не цифры":
Код: java
1.
phone.replaceAll("[^\\d]+", ""); // Java

имхо
...
Рейтинг: 0 / 0
Помогите с написанием регулярки
    #38776356
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kreol, тут и регекспы не очень нужны. Фактически
идёт случайная строка в которой подмешаны не менее 10 цифр.

Я-бы эту проверку запилил просто как Java-код.
...
Рейтинг: 0 / 0
Помогите с написанием регулярки
    #38776363
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanKreol,

Будет проще, если удалить все "не цифры":
Код: java
1.
phone.replaceAll("[^\\d]+", ""); // Java

имхо
Мы щас по проекту спорим. У нас много кода где идёт String::replaceAll(...).

В основном в Rest-методах где делаем замену типа http://host/path/{arg1}/{arg2}
заменяем на значения аргументов. Вобщем профайлер показывает
что цепочка реплейсов не так шустра как хотелось-бы.

Вобщем обсуждаем использование StringUtils вместо.
...
Рейтинг: 0 / 0
Помогите с написанием регулярки
    #38776402
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВобщем профайлер показывает
что цепочка реплейсов не так шустра как хотелось-бы.Да, есть такое. Для ускорения замены нужно вынести "наружу" скомпилированный
паттерн, чтобы не создавать его при каждом вызове String.replaceAll() :
Код: java
1.
public final static Pattern PHONE_PATTERN = Pattern.compile("\\D+");

а дальше пользоваться такой конструкцией:
Код: java
1.
PHONE_PATTERN.matcher(phone).replaceAll("");
...
Рейтинг: 0 / 0
Помогите с написанием регулярки
    #38776429
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВобщем обсуждаем использование StringUtils вместо.Apache Commons - вещь крутая. +100500.
...
Рейтинг: 0 / 0
Помогите с написанием регулярки
    #38776431
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman[/src]а дальше пользоваться такой конструкцией:
Код: java
1.
PHONE_PATTERN.matcher(phone).replaceAll("");


Хорошая мысль. +1. А экземпляр матчера будет потоко-безопасен?
...
Рейтинг: 0 / 0
Помогите с написанием регулярки
    #38776441
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА экземпляр матчера будет потоко-безопасен?Instances of this class (Pattern) are immutable and are safe for use by multiple concurrent threads. Instances of the Matcher class are not safe for such use.метод matcher() - потокобезопасен, а класс Matcher - нет.
...
Рейтинг: 0 / 0
Помогите с написанием регулярки
    #38776450
Kreol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответы. Но к сожалению Все эти телефоны идут в куче текста. И там помимо них есть еще море других цифр. Поэтому вариант удалить все нецифры неканает.
А вариант AndreTM не подходит для случаев когда пробелов 2 и больше
...
Рейтинг: 0 / 0
Помогите с написанием регулярки
    #38776475
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kreol, чудак. Ты как нам задачу поставил?
Ребят помогите пожалуйста написать универсальное регулярное выражение для вариаций телефонов (это доля телефонов для стран Саудовской Аравии) Кто как хочет так и пишет поэтому сложно описывать все.
...
Рейтинг: 0 / 0
Помогите с написанием регулярки
    #38776564
Kreol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нормально я поставил задачу, просто говорю, что не подходит способ удаления всего что не число, ибо данные номера находятся в куче текста, в котором также присутствуют числа ( ну хтмл даже этой страницы)
У меня прога воспринимает только регекспы
...
Рейтинг: 0 / 0
Помогите с написанием регулярки
    #38776580
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kreol, ты программный интерфейс опиши. Что у тебя вход. Что выход.
...
Рейтинг: 0 / 0
Помогите с написанием регулярки
    #38776663
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreolДа нормально я поставил задачу
Конечно, любой дурак отличит телефон от набора цифр
...
Рейтинг: 0 / 0
Помогите с написанием регулярки
    #38777367
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kreolвариант AndreTM не подходит для случаев когда пробелов 2 и большеА кто мешает это поправить, указав точно, как определить окончание номера?
И да, в вашем примере - не было двух пробелов :) А если попробовать рассуждать, то, например, три и больше пробелов посреди цифр - наверняка означают разные телефонные номера. Иначе, как вам и посоветовали - нужно предварительно обработать входную строку.
И, главное, дать пользователю возможность "окинуть взглядом" источник и результат. Поскольку точной формализации для вашей задачи - не существует (Как пример - сравните "10цифр+1пробел+10цифр" и "14цифр, чередующихся с 15разделителями". В первом случае мы "видим" два номера, во втором - всего один).
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите с написанием регулярки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]