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

いくつかの\-シーケンスがあります。-文字列レベルでエスケープしようとしていることを意味しますが、これは無意味です。\\-正規表現レベルでエスケープするために使用します (コンパイラは、最初のバックスラッシュが 2 番目のバックスラッシュをエスケープしていると見なし、渡された文字列に必要なシーケンスshowMessageDialogが含まれ\-ます)。

于 2012-07-15T08:58:11.210 に答える