簡體   English   中英

檢查字符串是否由3個大寫字母和4個數字組成

[英]Check whether a string is composed of 3 capital letters and 4 numbers

我需要檢查一個字符串是否由3個大寫字母和4個數字組成。

例如:ABC1234

如何使用正則表達式檢查它?

如果您要查找任何訂單,可以通過以下兩種有趣的方式進行:

^(?=(.*\d){4})(?=(.*[A-Z]){3}).{7}$

“正好是七個字符,包含4位數字和3個大寫字母”。

^(?<d>){4}(?<c>){3}((?<-d>\d)|(?<-c>[A-Z])){7}$

“請期待4位數字和3個大寫字母;然后確保我們總共總共有7位數字或大寫字母,並隨我們進行計數”。

我想象這樣的事情會起作用: https : //regex101.com/r/81ZTVQ/1

^[AZ]{3}[0-9]{4}$

說明:

  • [AZ] -區分大小寫的連續字符(大寫A到大寫Z)匹配謂詞
  • {n} -先前匹配謂詞的精確數字匹配
  • [0-9]數值范圍(在這種情況下,為0到9)匹配謂詞

測試用例:

ABC1234 - Full match
A1BC234 - No match
GFQ9230 - Full match
ACB0000 - Full match

編輯:

我想補充一下我的補充內容,該內容與Rawling的回答有些相似,但略有不同。

https://regex101.com/r/81ZTVQ/7

^(?=(.*[AZ]){3})(?=(.*\\d){4})([AZ\\d]{7})$

說明

  • (?=(.*[AZ]){3}) -與AZ匹配任何前一個字符的正向超前3次。
  • (?=(.*\\d){4}) -與0-9匹配任何前一個字符的正向超前3次。
  • ([AZ\\d]{7}) -提供的參數必須匹配此謂詞-AZ和0-9的任意組合為7。 我只喜歡將其分組,因此分組。

從邏輯上向后工作,只要長度為7,我們就可以將AZ和0-9進行任意組合。然后我們的正向斷言斷言了需求的長度(在這種情況下,為4位數字,3個大寫字母)。

編輯用例

ABC1234
A1BC234
GFQ9230
ACB0000
AGF1923
A237323
3E44E4E
12344AB
AAAE123
AK348A3

另一個正則表達式: ^[AZ]{3}\\d{4}$

  • \\d代表數字
  • ^第一個字符之前的錨點
  • $錨點位於最后一個字符之后

您可以檢查字符串是否由3個大寫字母和4個數字組成(假設這些大寫字母和數字可以出現在字符串中的任何位置),如下所示:

    Regex rgx = new Regex(@"(^[A-Z]{3}\d{4}$)|(^[A-Z]{2}\d[A-Z]\d{3}$)|(^[A-Z]{2}\d{2}[A-Z]\d{2}$)|(^[A-Z]{2}\d{3}[A-Z]\d$)|(^[A-Z]{2}\d{4}[A-Z]$)|(^[A-Z]\d[A-Z]{2}\d{3}$)|(^[A-Z]\d[A-Z]\d[A-Z]\d{2}$)|(^[A-Z]\d[A-Z]\d{2}[A-Z]\d$)|(^[A-Z]\d[A-Z]\d{3}[A-Z]$)|(^[A-Z]\d{2}[A-Z]{2}\d{2}$)|(^[A-Z]\d{2}[A-Z]\d[A-Z]\d$)|(^[A-Z]\d{2}[A-Z]\d{2}[A-Z]$)|(^[A-Z]\d{3}[A-Z]{2}\d$)|(^[A-Z]\d{3}[A-Z]\d[A-Z]$)|(^[A-Z]\d{4}[A-Z]{2}$)|(^\d[A-Z]{3}\d{3}$)|(^\d[A-Z]{2}\d[A-Z]\d{2}$)|(^\d[A-Z]{2}\d{2}[A-Z]\d$)|(^\d[A-Z]{2}\d{3}[A-Z]$)|(^\d[A-Z]\d[A-Z]{2}\d{2}$)|(^\d[A-Z]\d[A-Z]\d[A-Z]\d$)|(^\d[A-Z]\d[A-Z]\d{2}[A-Z]$)|(^\d[A-Z]\d{2}[A-Z]{2}\d$)|(^\d[A-Z]\d{2}[A-Z]\d[A-Z]$)|(^\d[A-Z]\d{3}[A-Z]{2}$)|(^\d{2}[A-Z]{3}\d{2}$)|(^\d{2}[A-Z]{2}\d[A-Z]\d$)|(^\d{2}[A-Z]{2}\d{2}[A-Z]$)|(^\d{2}[A-Z]\d[A-Z]{2}\d$)|(^\d{2}[A-Z]\d[A-Z]\d[A-Z]$)|(^\d{2}[A-Z]\d{2}[A-Z]{2}$)|(^\d{3}[A-Z]{3}\d$)|(^\d{3}[A-Z]{2}\d[A-Z]$)|(^\d{3}[A-Z]\d[A-Z]{2}$)|(^\d{4}[A-Z]{3}$)");
    var samples = new string[]{ "ABC1234", "1A2B3C4", "ABCD123", "aBC1234", "ABC12345" };
    foreach(var sample in samples)
    {
        Console.WriteLine(sample + " is " + (rgx.IsMatch(sample) ? "a match" : "not a match"));
    }

輸出:

ABC1234是一場比賽
1A2B3C4是一個匹配項
ABCD123不匹配
aBC1234不匹配
ABC12345不是一個匹配項

  • (...)代表一個團體
  • ^代表字符串的開頭
  • [AZ]代表大寫字母
  • [AZ] {n}代表n個大寫字母
  • \\ d代表一個數字
  • $代表字符串的結尾
  • | 用來表示右邊或左邊的任何東西都可以接受

暫無
暫無

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

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