2016-02-27 117 views
-1

我看不出這個正則表達式。我正在使用以下代碼來確定電話號碼是否正確需要這種電話號碼格式的正則表達式

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正則表達式庫)。

+0

當我使用你提出的建議時,ide說有沒有illigal轉義字符,並且不能接受它!任何建議? – Snake

+0

我錯過了java需要的雙重轉義。該示例已更新。 –

+0

完美的工作!我添加了\\ s來包含空格。感謝您的幫助。我不知道爲什麼有人會倒下這個問題 – Snake