有人可以帮我检查我的验证规则,因为它显示错误非法转义字符..谢谢..
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 :(得分: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
的字符串将包含所需的\-
序列)。