2016-07-07 2 views
1

Я пытаюсь запрограммировать логику замены для недопустимых номеров телефонов, которые я предоставляю с помощью карты . Я читаю несколько потоков выражений выражений, но я не знаю, действительно ли это возможно.Regex Замена проблемы неподходящей

Пример:

Введите номер телефона: +410712345678

регулярных выражений Я пытаюсь использовать:

"^\\+(?:[0-9] ?){6,14}[0-9]$" 

номер после того, как регулярное выражение и фильтрации должно быть: +41712345678. Поэтому на самом деле удаления первого экземпляра 0.

Второй пример:

вход Номер телефона: +41 (071) 2345678

регулярных выражений Я пытаюсь использовать:

"^\\+(?:[0-9] ?)\\({0,3}\\){3,11}[0-9]$" 

числа после регулярного выражения и фильтрации должно быть: +41712345678. Так что фактически удаляем первый экземпляр 0, а также фигурные скобки.

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

Есть ли способ создать шаблон фильтра, подобный регулярному выражению?

ответ

0

Похоже, вы должны применять это правило только для номера телефона Швейцарии, то есть для номеров +41, потому что простое удаление первого 0 из любого международного номера неверно.

Итак, ph = ph.replaceFirst("^(\\+41)\\(?0?([0-9]{2})\\)?", "$1$2").

См. regex101, как это работает.

0

Благодарим вас за ответ.

Я применил Regex к моему TestImport со следующим кодом:

//... 

log.debug("Applying Regex :" + SearchString + " with Replace: " + ReplaceString); 

log.debug("Applying Regex for Number:" + Person.get(EPerson.Rufnummer)); 
Person.put(EPerson.Rufnummer, Person.get(EPerson.Rufnummer).replaceFirst(SearchString, ReplaceString)); 
log.debug("New Number is:" +Person.get(EPerson.Rufnummer)); 

log.debug("Applying Regex for Number:" + Person.get(EPerson.RufnummerMobil)); 
Person.put(EPerson.RufnummerMobil, Person.get(EPerson.RufnummerMobil).replaceFirst(SearchString, ReplaceString)); 
log.debug("New Number is:" +Person.get(EPerson.RufnummerMobil)); 
    //... 

DEBUG [AddressbookFactory] Применение Numberfilter к: {Vorname = Testinator, Nachname = Test, Rufnummer = + 410717271818, RufnummerMobil =, RufnummerPrivat = +41 (071) 7271818, факс =, = Strasse, PLZ =, = Штадт, Bundesland =, электронная почта =, = Фирма, URL =}

ОТЛАДКА [AddressbookFactory] Regex Обнаружен

ОТЛАДКА [AddressbookFactory] Применение Regex:^(+ 41) (? 0? ([0-9] {2}))? с Replace: $ 1 $ 2

DEBUG [AddressbookFactory] Применение Regex для Number: +410717271818

DEBUG [AddressbookFactory] Новый номер: +41717271818

DEBUG [AddressbookFactory] Применение Regex для Номер: +41 (071) 7271818

DEBUG [AddressbookFactory] Новый номер: +41717271818 ...

И это сработало!

Большое вам спасибо за ваш быстрый ответ!

Я отметил ваш ответ как полезный, но через свою репутацию «новичок» он не указывает его.

Этот вопрос разрешен.

Искренний Фабиан95qw