我在验证flightCode时遇到问题,我想用户在此表格中输入航班代码ABC123
private void ValidationOfFlightCode(String flightCode)
{
if (flightCode.length()== 6)
{
boolean isvalid = Regex.IsMatch(flightCode, @"^[a-zA-Z]{3}[0-9]{3}$");
if (isvalid)
{
boolean isLetter = false;
for (int i = 0; i < 3; i++)
{
isLetter = Char.IsLetter(flightCode, i);
if (!isLetter)
break;
}
if (isLetter)
{
System.err.println(flightCode + ": " + isvalid);
}
else
{
System.err.println("");
}
}
else
{
System.err.println("");
}
}
else
{
System.err.println("");
}
}
答案 0 :(得分:1)
怎么样:
private void ValidationOfFlightCode(String flightCode){
boolean isValid = flightCode.matches("^[A-Z]{3}[0-9]{3}$");
System.out.println(flightCode + ": " + isValid);
}
基本上你的代码的其余部分是不必要的,因为正则表达式已经包含6个字符要求和指定的格式(3个大写字母,然后是3个数字)。 更有意义的是:
private boolean validateFlightCode(String flightCode){
boolean isValid = flightCode.matches("^[A-Z]{3}[0-9]{3}$");
//System.out.println(flightCode + ": " + isValid);
return isValid;
}
第二个选项也返回验证结果。此方法命名也符合Java编码约定,并且更易于阅读,因为您实际上并未描述过程(验证),而是操作(验证)。
编辑:仅将"^[A-Z]{3}[0-9]{3}$"
用于大写字母,"^[a-z]{3}[0-9]{3}$"
仅用于小写,"^[a-zA-Z]{3}[0-9]{3}$"
用于混合,"^([A-Z]|[a-z]){3}[0-9]{3}$"
用于任何一种。