验证规则发生错误

时间:2012-07-15 08:46:42

标签: java regex validation

有人可以帮我检查我的验证规则,因为它显示错误非法转义字符..谢谢..

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);
    }

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

您有几个\-序列。它们意味着你试图在字符串级别逃避-,这是没有意义的。使用\\-在正则表达式级别转义它(然后编译器会将第一个反斜杠视为转义为第二个,而传递给showMessageDialog的字符串将包含所需的\-序列)。