1

我尝试对 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}")

但是,根据您的示例,您似乎只想考虑以大写字母开头,后跟七个数字,以另一个大写字母结尾的有效字符串,在这种情况下,您将使用

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

(回想一下,在正则表达式中X{n}意味着X重复的n时间。)

于 2012-12-22T10:24:41.697 回答
1
于 2012-12-22T10:25:15.557 回答