Java NRIC的验证

Java NRIC的验证,java,Java,我试着对NRIC进行验证。它仅在第一个和最后一个字符为字母且NRIC的长度为9时有效。例如,S1234567G 当用户输入错误的格式时,会弹出错误的格式消息,例如S123D和S12345678G。这是我的密码 boolean isLetter = true; } else if (nric.equals("")) { JOptionPane.showMessageDialog(null, "Please enter NRIC"); } else if (i

我试着对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");
        }
boolean=true;
}else if(nric.等于(“”){
showMessageDialog(null,“请输入NRIC”);
}else if(isLetter==false){
对于(int count=0;count
这不是全部代码。我还有其他文本字段的验证。我只是分离了NRIC部分,因为我知道这里有一些错误


无论我输入什么,它都会在我的数据库中创建一条记录。即使格式错误,它也不会显示错误消息。有人能帮我检查一下吗?提前谢谢。

您可以使用正则表达式来匹配,例如

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

根据你的例子,看起来你只想考虑字符串的有效性,从大写字母开始,后面跟着七个数字,在另一个大写字母中结束,在这种情况下你将使用< /P>

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

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

我认为这意味着任何一种大写ASCII字母,而不是像
将传递
字符.isleter


使用类似于
[a-Z][0-9]{7}[a-Z]

的正则表达式是最简单的,那么我应该写些什么呢?我对It领域很陌生,以前也没有见过。请举个例子好吗?基本上都有:
nric.matches(\\p{Upper}\\d{7}\\p{Upper}”)
应该返回您想要的结果。是的,它现在可以工作了。那么我可以这样解释吗?\\p{Upper}检查第一个字符是否是字母表。如果是小写,它将自动转换为大写。对于\\d{7},它检查以下字符的数量是否是7。最后一个\\p{Upper}与第一个相同。对吗?@GabrielHeng不,
\\p{Upper}
是隐式编写
[A-Z]
,与
\\d
相同,隐式
[0-9]
什么是正则表达式?你能给我一个例子吗?@GabrielHeng
if(inputString.matches([A-Z][0-9]{7}[A-Z]))
Regex是正则表达式的缩写。我可以这样解释吗?第一个[A-Z]决定第一个字符是否为字母表。第[0-9]检查下面的字符是否为数字。{7}就像数组一样,它将字符数限制为7。最后一个[A-Z]和刚才一样,确定字母表是否正确。对了吗?@GabrielHeng是的,它的意思是,A-Z之间有一个字符。然后是0-9之间的七个字符。然后是A-Z之间的一个字符。因此
A0000000A
是有效的。顺便问一下,在java swing中还有其他方法进行验证吗?我目前正在使用if、else if和else语句使我的代码非常长,因为有许多文本字段。