2016-08-03 4 views
1
if((phone.length() > 10 && 
        ((phone.contains("+1" + "((\\\\d{3}-)){1,2}\\\\d{4}")) 
        || (phone.contains("+966" + "d{9}")))) 
        || ((phone.length() == 10) && 
        !(phone.contains("(") && !(phone.contains(")") && 
        !(phone.contains("-")))))) //phone doesnt contain special characters if its a saudi no. 
       { 
        .... 
       } 
       else { 
        .... 
       } 

안녕하세요 모든 : 나는 다음과 같은 전화 번호의 형식과 아무것도 검증하는 코드를 만들려고 해요 :정규식을 사용하여 전화 번호의 유효성을 검사 하시겠습니까?

  1. + 9665xxxxxxxx
  2. 05xxxxxxxx
  3. +1 (XXX) XXX를 -xxxx
  4. + 1xxxxxxxxxx
  5. XXX-XXX-XXXX

전화 번호가 String "phone"으로 표시되는 위 코드에서이 작업을 시도했습니다. 그러나 나는 그것이 잘못, 특히 정규식을 한 것 같아요. 이 작업을 수행하는 더 간단한 방법이 있다면 누구나 말해 줄 수 있습니까? 아니면 단순화 된 코드 버전입니까? if() 문을 대신 사용하면 더 쉬울까요? 죄송합니다. 저는 Java에 익숙하지 않으므로 잘못된 것이 있습니다. 이 같은

+0

, 당신은 숫자는 단순히 그 다섯 중 하나와 일치해야 함을 의미합니까 유효한 것으로 간주 될 패턴 또는 실제, 정품 전화 번호를 나타내야합니까? 하나는 다른 것보다 더 어렵습니다 – JonK

+0

@JonK 두 번째 부분은 무엇을 의미합니까? 방금 패턴에 맞춰야한다는 의미 였기 때문에 –

답변

1

뭔가 트릭을 수행해야합니다

Pattern pattern = Pattern.compile(
    "\\+9665\\d{8}|05\\d{8}|\\+1\\(\\d{3}\\)\\d{3}-\\d{4}|\\+1\\d{10}|\\d{3}-\\d{3}-\\d{4}" 
); 
Matcher matcher = pattern.matcher("+966512345678"); 
System.out.println(matcher.matches()); 

출력 : 유효성을 검사의 *을 * 말

true 
+0

대단히 감사합니다! 이걸 어떻게 배웠는지 알 수 있습니까? –

+0

javadoc은 좋은 시작입니다. https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html –

관련 문제