需要此电话号码格式的正则表达式

时间:2016-02-27 22:35:10

标签: java regex

我无法弄清楚这个正则表达式。我使用以下代码来确定电话号码是否正确

public static boolean verifyPhoneNum(String phone) {
         Pattern pattern = Pattern.compile("^[0-9*#+]+$");
         Matcher matcher = pattern.matcher(phone.trim());
         return matcher.matches();
}

但它没有按预期工作。电话号码可以包含任意数量的数字,#, - ,+,空格,(和)

我尽可能地让它变得松散。我基本上不想在那里写字母(最好是其他任何特殊字符)

任何帮助?谢谢

2 个答案:

答案 0 :(得分:1)

其中有特殊字符需要转义(*+):

public static boolean verifyPhoneNum(String phone) {
     Pattern pattern = Pattern.compile("^[0-9#\\+\\(\\)\\-]+$");
     Matcher matcher = pattern.matcher(phone.trim());
     return matcher.matches();
}

这将允许任何数字,-#+()。这是一个带有示例的Regex101 link to the regex(使用PCRE正则表达式库)。

答案 1 :(得分:0)

使用String.replaceAll(String, String)代替RegEx

可能更容易

Remove dash from a phone number的一些回复有一些非常有趣的代码可能会对您有所帮助。

请参阅String.replaceAll(String, String)