0

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

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

2 回答 2

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);
}
于 2012-07-15T08:57:42.600 回答
0

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

于 2012-07-15T08:58:11.210 回答