2014-09-30 3 views
-2

나는 다음과 같은 요구 사항이 있습니다정규식 전화 번호를 추출

번호 (순서 또는 하이픈 또는 공간로 구분) 하이픈을 가질 수

- [선택]

사이에

공백 사이 [선택 가능]

열린 중괄호 (닫는 중괄호) [선택]

을 가질 수 플러스 시작 부분에 +을 가질 수 있습니다. [선택]

지금 내가 사용하고 (^ |). 0-9() - +] {5} (| $)

샘플 텍스트 :

연락 아시아 : 다른 지역은 다른 규칙을 가지고 (11) 6530-6596-3242, 9145465465465 (011) 4420717696024 +1 212-904-2860

+0

후 몇 가지 예입니다. –

+0

정규 표현식을 개발하고 테스트하기 위해 http://www.rubular.com/을 "워크 벤치"로 추천 할 수 있습니다. 참조를 포함합니다. – Henrik

+0

@AvinashRaj이 (가) 게시했습니다. – user3311019

답변

0

찾기 전화 번호는, 다소 어려운 문제입니다 전화 번호 에스. 그 목적을 위해 Google에서 개발 한 라이브러리 인 libphonenumber을 제안합니다. libary에는 전화 번호를 찾아 파싱 된 방식으로 반환하는 메서드 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\)\-]+[, ]?

관련 문제