2013-05-02 2 views
0

나는 내 입력이 다음 문자열 '전화'정규 표현식은

내가 한 같은 패턴입니다 있는지 확인하기 위해 내 프로그램 싶습니다 지금

String phone = (123) 456-7890 

아래에 같은 문자열이

if(phone.contains("([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]")) { 

    //display pass 
} 
else { 

    //display fail 
} 

작동하지 않았습니다. 나는 다른 조합도 시도했다. 아무것도 작동하지 않았다.

질문 : 1. 위와 같은 '패턴'을 사용하지 않고 어떻게하면됩니까? 2. 패턴을 사용하여이를 수행하는 방법. 나는 아래의 패턴으로 시도했다

패턴 패턴 = Pattern.compile ("(\ d +)"); 매치 매치 = pattern.matcher (전화); 문자열 패턴과 일치하는 경우

if (match.find()) { 
    //Displaypass 
} 
+2

. 그들은 정규 표현식에서 특별한 의미가 있습니다. – Maroun

답변

4

String#matches 검사 :

if (phone.matches("\\(\\d{3}\\) \\d{3}-\\d{4}")) { 
    //Displaypass 
} 

패턴은 정규 표현식이다. 그러므로 정규 표현식에서 특별한 의미를 가지기 때문에 둥근 괄호를 벗어나야했습니다 (캡쳐 그룹을 나타냄).

은 문자열에 전달 된 하위 문자열이 포함되어 있는지 확인합니다.

+0

+1. regex에서 특별한 의미를 지닌 문자를 이스케이프 처리하는 것에 대해 말하고 싶을 수도 있습니다. – Maroun

+0

완벽하게 일했습니다 .. 고마워요 @jlordo – user1669488

1

정규식 구문에 너무 깊이 들어가서는 안 될 것이지만, 정규식에서는 분명히 뭔가 있습니다.

"([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" 

()는 containes 그 특별한 의미를 가지고있다. 그

"\([0-9][0-9][0-9]\) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" 

을 탈출하고 당신은 또한 같은 당신이 쓸 수있는 마지막

"\\([0-9][0-9][0-9]\\) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" 
+0

고마워 .. 오늘 뭔가 새로운 것을 배웠습니다 :) – user1669488

0

대한 \을 탈출해야합니다 :

Pattern pattern = Pattern.compile("\\(\\d{3}\\) \\d{3}-\\d{4}"); 
Matcher matcher = pattern.matcher(sPhoneNumber); 

if (matcher.matches()) { 
    System.out.println("Phone Number Valid"); 
} 

자세한 내용은 this article를 방문 할 수 있습니다.

0

문제는 당신이 괄호를 벗어나지 않아서 정규 표현식이 실패하고있는 것으로 보입니다. 이 시도 :

\([0-9][0-9][0-9]\) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] 
0

String PHONE_REGEX = "[(]\\b[0-9]{3}\\b[)][ ]\\b[0-9]{3}\\b[-]\\b[0-9]{4}\\b"; 
String phone1 = "(1234) 891-6762"; 
Boolean b = phone1.matches(PHONE_REGEX); 
System.out.println("is e-mail: " + phone1 + " :Valid = " + b); 
String phone2 = "(143) 456-7890"; 
b = phone2.matches(PHONE_REGEX); 
System.out.println("is e-mail: " + phone2 + " :Valid = " + b); 

출력을 작동합니다 : 당신은`(`와`)`를 탈출해야

is phone: (1234) 891-6762 :Valid = false 
is phone: (143) 456-7890 :Valid = true