我无法弄清楚这个正则表达式。我使用以下代码来确定电话号码是否正确
public static boolean verifyPhoneNum(String phone) {
Pattern pattern = Pattern.compile("^[0-9*#+]+$");
Matcher matcher = pattern.matcher(phone.trim());
return matcher.matches();
}
但它没有按预期工作。电话号码可以包含任意数量的数字,#, - ,+,空格,(和)
我尽可能地让它变得松散。我基本上不想在那里写字母(最好是其他任何特殊字符)
任何帮助?谢谢
答案 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的一些回复有一些非常有趣的代码可能会对您有所帮助。