簡體   English   中英

正則表達式 - C# 中的 2 個字母和 2 個數字

[英]Regular Expression - 2 letters and 2 numbers in C#

我正在嘗試開發一個正則表達式來驗證出現在我面前的字符串,例如:“TE33”或“FR56”或任何關於 2 個字母和 2 個數字的序列。

前 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")) {
    // ...
}

這是一個演示。


編輯:如果您可以在開頭的 2 個字母和最后的 2 個數字之間有任何內容:

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

這是一個演示。

這應該讓您以兩個字母開頭並以兩個數字結尾。

[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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM