验证用户输入是否采用这种格式" ABC123"无效的布尔值

时间:2014-11-01 20:40:43

标签: java performance java-ee swig

我在验证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("");
    }
}

1 个答案:

答案 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}$"用于任何一种。