正则表达式 - C#中的2个字母和2个数字

Dan*_*-SP 21 c# regex

我正在尝试开发一个正则表达式来验证一个字符串,它来自我:"TE33"或"FR56"或任何关于2个字母和2个数字的序列.

前2个字符必须是字母,最后2个字符必须是数字.

我尝试了很多组合,但没有成功.最后一个我试过:

if(Regex.IsMatch(myString, "^[A-Za-z]{2}[0-9]{2}")){
}
Run Code Online (Sandbox Code Playgroud)

Ry-*_*Ry- 34

你错过了一个结束锚.

if(Regex.IsMatch(myString, "^[A-Za-z]{2}[0-9]{2}\z")) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这是一个演示.


编辑:如果你可以在最初的2个字母和最后的2个数字之间有任何东西:

if(Regex.IsMatch(myString, @"^[A-Za-z]{2}.*\d{2}\z")) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这是一个演示.


Jas*_*ter 5

这应该让你从两个字母开始,以两个数字结束.

[A-Za-z]{2}(.*)[0-9]{2}
Run Code Online (Sandbox Code Playgroud)

如果你知道它总是只有两个和两个你可以

[A-Za-z]{2}[0-9]{2}
Run Code Online (Sandbox Code Playgroud)


Jam*_*ill 5

只是为了好玩,这是一个非正则表达式(对于像我这样的傻瓜来说更具可读性/可维护性)解决方案:

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
}
Run Code Online (Sandbox Code Playgroud)

编辑

看来我误解了要求。下面的代码将确保字符串的前两个字符和最后两个字符有效(只要字符串的长度> 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
}
Run Code Online (Sandbox Code Playgroud)