正则表达式匹配所有电话号码

时间:2013-11-12 05:20:47

标签: android regex phone-number

我已尝试将电话号码与Android在Patterns.Phone中提供的正则表达式进行匹配,这与很多不是电话号码的内容相匹配。我也尝试过使用:

(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?

但是,我发现所有输入的Test都没有成功。我想使用正则表达式验证以下输入:

  67450450
  +9144-27444444
  27444444 
  27470570
  +12142261347
  +61406366180
  0891 2577456
  2577456
  +91 9550461668
  9550461668
  03-1234567  
  1860 425 3330 

这里支持任何nymber格式:WTND

2 个答案:

答案 0 :(得分:1)

you can use the following code to check phone #:

    private boolean validPhone(String phone) {
        Pattern pattern = Patterns.PHONE;
        return pattern.matcher(phone).matches();
    }



if(validPhone("67450450")){
  Toast.makeText(this,"The phone number is valid");
}
 else
{
  Toast.makeText(this,"The phone number is not valid");
}

答案 1 :(得分:0)

这不是干净/高效,只是将它们放在一起以匹配您的样本数据:

\b\d{7,10}|\+\d{4}-\d{8}|\+\d{11}|\d{4}\s\d{7}|\+\d{2}\s\d{10}|\d{2}-\d{7}|\d{4}\s\d{3}\s\d{4}\b