我有一个文本框,我想验证它是否匹配模式 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) )
答案 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}$");
具有明显的含义:一个字母,两个空格,四个数字,一个空格,三个字母。