2014-09-30 3 views
-2

У меня есть следующие требования:Regex для извлечения телефонных номеров

Количество (в последовательности или разделённых дефис или пространства)

Может иметь дефис - между [опционально]

Может иметь пробел между [опционально]

Может иметь открытые скобки ( и закрывающая скобка) [опционально]

Может иметь плюс + в начале. [Опционально]

Прямо сейчас, я использую (^ |) [. 0-9() - +] {5} (| $)

Пример текста:

CONTACT Asia: (11) 6530-6596-3242, +9145465465465 (011) 4420717696024 +1 212-904-2860

+0

пост некоторые примеры. –

+0

Я могу порекомендовать http://www.rubular.com/ как «верстак» для разработки и тестирования вашего регулярного выражения. Также содержит ссылку. – Henrik

+0

@ AvinashRaj отправлено. – user3311019

ответ

0

Поиск номера телефонов является довольно трудной задачей, так как различные регионы имеют разные соглашения для их номер телефона s. Я бы предложил libphonenumber, библиотеку, разработанную в Google для этой цели. Библиотека содержит метод findNumbers(CharSequence, String), который находит номера телефонов и возвращает их в разобранном виде.

String text = "Call me at +1 425 882-8080 for details."; 
RegionCode country = RegionCode.US; 
PhoneNumberUtil util = PhoneNumberUtil.getInstance(); 

// Find the first phone number match: 
PhoneNumberMatch m = util.findNumbers(text, country).iterator().next(); 

// rawString() contains the phone number as it appears in the text. 
"+1 425 882-8080".equals(m.rawString()); 

// start() and end() define the range of the matched subsequence. 
CharSequence subsequence = text.subSequence(m.start(), m.end()); 
"+1 425 882-8080".contentEquals(subsequence); 

// number() returns the the same result as PhoneNumberUtil.parse() 
// invoked on rawString(). 
util.parse(m.rawString(), country).equals(m.number()); 
0

Это, вероятно, не будет работать в любой ситуации, но вы должны иметь больше входных правил номер телефона, но вы можете дать этому попытку: [0-9\(\+]+[0-9\)\-]+[, ]?

Смежные вопросы