我正在尝试开发一个正则表达式来验证像“TE33”或“FR56”这样的字符串,或者任何符合2个字母和2个数字的序列。
前2个字符必须是字母,后2个字符必须是数字。
我尝试了许多组合,但都没有成功。我最后尝试的一个是:
if(Regex.IsMatch(myString, "^[A-Za-z]{2}[0-9]{2}")){
}
AB12 I am invalid
这样的字符串,它将会失败。但是我可能对问题有误解,所以我添加了一个备选方案。 - Ry-\n
。请使用\z
代替。 - Qtax[A-Za-z]{2}(.*)[0-9]{2}
如果你知道它永远只会是两个和两个,那么你可以
[A-Za-z]{2}[0-9]{2}
仅供娱乐,这里提供一种非正则表达式的解决方案(对于像我这样的初学者更易读和维护):
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
}
A-Z
。我以前从未使用过Char.IsNumber
。感谢您的提醒(已更新代码)! - James HillTE3345FAIL
又是怎么符合条件呢? - Qtax
myString.Trim()
... - Alexei Levenkov