1

NRICの検証を試みます。最初と最後の文字が文字で、NRICの長さが9の場合にのみ有効です。たとえば、S1234567Gです。

ユーザーが間違った形式(S123DやS12345678Gなど)を入力すると、間違った形式のメッセージが表示されます。これが私のコードです。

    boolean isLetter = true;
    } else if (nric.equals("")) {
        JOptionPane.showMessageDialog(null, "Please enter NRIC");
    } else if (isLetter == false) {
        for (int count = 0; count < nric.length(); count++) {
            char i = nric.charAt(count);
            if ((i != 9) && (!Character.isLetter(nric.charAt(0)))
                    && (!Character.isLetter(nric.length() - 1)))
                isLetter = false;
        }
        if (isLetter == false) {
            JOptionPane.showMessageDialog(null, "NRIC wrong format");
        }

これはコード全体ではありません。他のテキストフィールドについても他の検証があります。ここでエラーがあることがわかったので、NRIC部分を分離しました。

入力した内容が何であれ、データベースにレコードが作成されます。フォーマットが間違っていてもエラーメッセージは表示されません。誰かが私がチェックするのを手伝ってもらえますか?前もって感謝します。

4

2 に答える 2

1

matchesたとえば、正規表現を使用できます。

nric.matches("\\p{Alpha}.{7}\\p{Alpha}")

ただし、あなたの例によると、大文字で始まり、7桁で終わり、別の大文字で終わる文字列のみを有効と見なしたいようです。この場合は、

nric.matches("\\p{Upper}\\d{7}\\p{Upper}")

(正規表現では繰り返し回数をX{n}意味することを思い出してください。)Xn

于 2012-12-22T10:24:41.697 に答える
1
于 2012-12-22T10:25:15.557 に答える