C#检查字符串是否为ABC123类型

EM1*_*M10 1 c# visual-studio-2010

我想检查字符串是否为ABC123类型.

  • 字符串的长度必须为6.
  • 只允许使用字母和数字.
  • 字符串的前三个值必须是字母.

这就是我所做的.我该如何改进代码?

    private void ValidationOfFlightCode(string flightCode)
    {
        if (flightCode.Length == 6)
        {
            bool state = Regex.IsMatch(flightCode, @"^[a-zA-Z0-9]+$");
            if (state)
            {
                bool isLetter = false;
                for (int i = 0; i < 3; i++)
                {
                    isLetter = Char.IsLetter(flightCode, i);
                    if (!isLetter)
                        break;
                }
                if (isLetter)
                {
                    MessageBox.Show(flightCode + ": " + state);
                }
                else
                {
                    MessageBox.Show("The letters must be before the numbers");
                }
            }
            else
            {
                MessageBox.Show("Only letters and numbers are allowed!");
            }
        }
        else
        {
            MessageBox.Show("Flight Code must be 6 characters long");
        }
    }
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

这个正则表达式应该有效:

^[a-zA-Z]{3}[a-zA-Z0-9]{3}$
//  ^     ^      ^      ^
//  |     |      |      |
//  |     |      |      +-- Three times
//  |     |      +--------- Letters or digits
//  |     +---------------- Three times
//  +---------------------- Only letters
Run Code Online (Sandbox Code Playgroud)

如果IsMatch在这个正则表达式返回false,你可以做进一步的验证,看看有什么问题.

我该如何改进代码?

您可以创建一对正则表达式和错误消息的列表.每个正则表达式应该比前一个更具限制性.浏览列表,尝试将代码与正则表达式进行匹配.如果没有匹配项,请打印错误消息并退出循环.例如,您可以这样做:

  • ^.{6}$ - "代码必须包含六个字符"
  • '^ [a-zA-Z0-9] {6} $' - "字符必须是alhpanumeric"
  • '^ [[a-zA-Z] {3}.{3} $' - "前三个字符必须是字母"

  • ^ [A-ZA-Z] {3} [0-9] {3} $ (2认同)