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

C# 正则表达式-C中的2个字母和2个数字#,c#,regex,C#,Regex,我试图开发一个正则表达式来验证出现在我面前的字符串,比如:“TE33”或“FR56”或任何关于2个字母和2个数字的序列 前两个字符必须是字母,最后两个字符必须是数字 我尝试了很多组合,但都没有成功。我试过的最后一个: if(Regex.IsMatch(myString, "^[A-Za-z]{2}[0-9]{2}")){ } 你错过了一个结束锚 if(Regex.IsMatch(myString, "^[A-Za-z]{2}[0-9]{2}\z")) { // ... } 这应该让你明

我试图开发一个正则表达式来验证出现在我面前的字符串,比如:“TE33”或“FR56”或任何关于2个字母和2个数字的序列

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

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

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

你错过了一个结束锚

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

这应该让你明白以两个字母开头,以两个数字结尾

[A-Za-z]{2}(.*)[0-9]{2}
如果你知道它将永远只是二加二,你可以

[A-Za-z]{2}[0-9]{2}

为了好玩,这里有一个非正则表达式(对于像我这样的Simpleton来说更容易阅读/维护)解决方案:

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)


我总是在一个regex测试网站上整理这些内容,然后进入vs.net,我知道一些互动测试中有用的东西。一个好的测试网站会帮你解决这些问题,比如对我来说很好。传入的字符串到底是什么样子的?你是想匹配一个字符串的一部分,还是这4个字符就是整个字符串?我经常使用的另一个测试站点是一个很好的方面,它实际上是Regex的.NET风格?这对我来说是有效的。除非你真的需要拒绝任何比预期长的字符串,否则这不重要。这也匹配了结尾的锚,可能还有其他问题@威廉德怀尔:对不起,我选择了一些糟糕的测试用例。如果没有锚点,它将在字符串中失败,例如
AB12 I is invalid
。但我可能误解了这个问题,所以我添加了一个替代选项,-1,将允许在字符串末尾添加一个
\n
。使用
\z
代替。请注意,Isleter比A-z宽得多。您也可以对数字使用相同的检查。@AlexeiLevenkov,
A-z
注意。我以前从未使用过
Char.IsNumber
。谢谢你的提醒(更新代码)@JamesHill,这就是OPs表达式的问题。。。请看投票数最高的答案<代码>验证出现在我面前的字符串,如:“TE33”或“FR56”或关于2个字母和2个数字的任何序列,那么
TE3345失败
如何适应这种情况?
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
}
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
}