2016-08-03 2 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 (ххх) ххх -xxxx
  4. + 1xxxxxxxxxx
  5. XXX-XXX-XXXX

Я попытался сделать это в коде выше, где номер телефона представлен как «телефон». Однако я думаю, что я сделал это неправильно, особенно в регулярном выражении. Может ли кто-нибудь сказать мне, есть ли более простой способ сделать это? Или упрощенная версия кода? Было бы проще, если бы я использовал серию операторов if()? Мне жаль, что я очень новичок в java, поэтому я уверен, что сделал что-то неправильно.

+0

Когда вы говорите * Validate *, вы имеете в виду, что номер просто должен соответствовать одному из этих пяти шаблоны, которые считаются действительными, или же он должен представлять фактический, подлинный номер телефона? Один сложнее, чем другой – 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 –

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