我想制作一些符合下面格式的验证字符串

时间:2016-05-11 12:03:10

标签: c# validation textbox

我有一个文本框,我想验证它是否匹配模式 Car Plate = [X]__[####]_[ZZZ]

  • [X] =一个大写字母
  • _ =空间
  • [####] =四位数
  • [ZZZ] =三个大写字母

示例:A 1234 BCD

如何在文本框中设置验证以匹配此内容?

这是根据先生迪米特里的代码

private void isvalidplate(string a)
    {
        if (a[0] < 'A' && a[0] > 'Z')
        {
            MessageBox.Show("Car Plate is invalid!");
        }
        else if (a[1] != ' ' && a[5] != ' ')
        {
            MessageBox.Show("Car Plate is invalid!");
        }
        else if (a[2] != Int64.Parse(a) && a[3]!= Int64.Parse(a) && a[4]!= Int64.Parse(a) )
        {
            MessageBox.Show("Car Plate is invalid!");
        }
        else if ((a[6] < 'A' && a[6] > 'Z')&&(a[7] < 'A' && a[7] > 'Z')&&(a[8] < 'A' && a[8] > 'Z')&&(a[9] < 'A' && a[9] > 'Z'))
        {
            MessageBox.Show("Car Plate is invalid!");
        }
    }

但它显示“输入字符串不是正确格式”的错误 错误在这一行

else if (a[2] != Int64.Parse(a) && a[3]!= Int64.Parse(a) && a[4]!= Int64.Parse(a) )

2 个答案:

答案 0 :(得分:0)

用于字符串验证和解析的多种语言的常用工具是正则表达式(通常称为正则表达式)。习惯使用它们作为开发人员非常方便。符合您需要的正则表达式如下:

^[A-Z]\s\d{4}\s[A-Z]{3}$

This site显示您的正则表达式。在C#中,您可以使用Regex库测试字符串:

bool valid = Regex.IsMatch(myTestString, @"^[A-Z]\s\d{4}\s[A-Z]{3}$");

在线学习正则表达式有很多资源。

答案 1 :(得分:0)

所以你必须实现显式测试:

public static String IsCarPlateValid(String value) {
  // we don't accept null or empty strings
  if (String.IsNullOrEmpty(value))
    return false;

  // should contain exactly 11 characters
  //  letter{1}, space {2}, digit{4}, space{1}, letter{3}  
  //  1 + 2 + 4 + 1 + 3 == 11
  if (value.Length != 11)
    return false;

  // First character should be in ['A'..'Z'] range;
  // if it either less than 'A' or bigger than 'Z', car plate is wrong
  if ((value[0] < 'A') || (value[0] > 'Z'))
    return false;

  //TODO: it's your homework, implement the rest

  // All tests passed
  return true;
}

测试您的实现,您可以使用正则表达式:

Boolean isValid = Regex.IsMatch(carPlate, "^[A-Z]{1} {2}[0-9]{4} {1}[A-Z]{3}$");

具有明显的含义:一个字母,两个空格,四个数字,一个空格,三个字母。