2012-07-15 55 views
0

有人可以幫我查一下我的驗證規則,因爲它顯示的錯誤非法逃逸character..thanks ..驗證規則發生錯誤

if(staffICNo.length() == 0 || !staffICNo.matches("([0-9][0-9])((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\-([0-9][0-9])\-([0-9][0-9][0-9][0-9])")){ 
     JOptionPane.showMessageDialog(null,"IC Number must be in this format : 101010-10-1010..","",JOptionPane.WARNING_MESSAGE); 
    } 
+0

你能用你的代碼片段寫入的編程語言來標記你的問題嗎?否則回答者很難找到你的問題。 – 2012-07-15 08:53:54

回答

1

這是一些轉義字符的問題。在java中,你需要轉義字符串內的'\'字符。 嘗試

if(staffICNo.length() == 0 || !staffICNo.matches("([0-9][0-9])((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\\-([0-9][0-9])\\-([0-9][0-9][0-9][0-9])")){ 
    JOptionPane.showMessageDialog(null,"IC Number must be in this format : 101010-10-1010..","",JOptionPane.WARNING_MESSAGE); 
} 
0

你有幾個\-序列。他們的意思是你試圖在字符串級別跳過-,這是沒有意義的。使用\\-以正則表達式級別轉義它(編譯器會將第一個反斜槓視爲轉義第二個反斜槓,並且傳遞給showMessageDialog的字符串將包含所需的\-序列)。