我正在尝试开发一个正则表达式来验证一个字符串,它来自我:“TE33”或“FR56”或任何关于2个字母和2个数字的序列。
前2个字符必须是字母,最后2个字符必须是数字。
我尝试了很多组合,但没有成功。最后一个我试过:
if(Regex.IsMatch(myString, "^[A-Za-z]{2}[0-9]{2}")){
}
答案 0 :(得分:34)
你错过了一个结束锚。
if(Regex.IsMatch(myString, "^[A-Za-z]{2}[0-9]{2}\z")) {
// ...
}
编辑:如果你可以在最初的2个字母和最后2个数字之间有任何东西:
if(Regex.IsMatch(myString, @"^[A-Za-z]{2}.*\d{2}\z")) {
// ...
}
答案 1 :(得分:5)
这应该让你从两个字母开始,以两个数字结尾。
[A-Za-z]{2}(.*)[0-9]{2}
如果你知道它总是只有两个,你可以
[A-Za-z]{2}[0-9]{2}
答案 2 :(得分:4)
只是为了好玩,这里有一个非正则表达式(对我这样的傻瓜来说更易读/可维护)解决方案:
string myString = "AB12";
if( Char.IsLetter(myString, 0) &&
Char.IsLetter(myString, 1) &&
Char.IsNumber(myString, 2) &&
Char.IsNumber(myString, 3)) {
// First two are letters, second two are numbers
}
else {
// Validation failed
}
修改强>
似乎我误解了这些要求。下面的代码将确保字符串的前两个字符和后两个字符有效(只要字符串的长度为> 3)
string myString = "AB12";
if(myString.Length > 3) {
if( Char.IsLetter(myString, 0) &&
Char.IsLetter(myString, 1) &&
Char.IsNumber(myString, (myString.Length - 2)) &&
Char.IsNumber(myString, (myString.Length - 1))) {
// First two are letters, second two are numbers
}
else {
// Validation failed
}
}
else {
// Validation failed
}