簡體   English   中英

正則表達式,用於使用CSV將字符串格式驗證為特定長度

[英]Regular expression to validate string format to specific length with csv

我正在嘗試編寫一個正則表達式來驗證文本框是否只有長度為5或9的數字。我找到了以下正則表達式來完成此操作

^\d{1,5}([,]\d{5})*$

但是它不能正確地滿足我的要求,任何人都可以幫助我修改或編寫支持以下模式的新正則表達式。

  • 09103,09101, 有效 (以逗號結尾)
  • 09103,09101 有效 (不以逗號結尾)
  • 12345,1234567 無效 (如果第一個數字的長度為5而第二個數字的長度小於9,則不支持)
  • 12345,123456789 有效 (必須僅支持數字長度5或9)

請嘗試以下操作:

var lines = new []
{
    "09103,09101,",
    "09103,09101",
    "12345,1234567",
    "12345,123456789",
    "12345"
};

var re = new Regex(@"^\d{1,5}(,(\d{5}|\d{9}))?,?$");

foreach (var line in lines)
{
    Console.WriteLine("{0} = {1}", line, re.IsMatch(line) ? "Valid" : "Invalid");
}

產量

09103,09101, = Valid
09103,09101 = Valid
12345,1234567 = Invalid
12345,123456789 = Valid
12345 = Valid

您可以在此處運行它: C#小提琴

嘗試一下,以獲取確切的測試用例。

^\d{5},?$|^\d{5},\d{5},?$|^\d{5},\d{9},?$

它使用| 字符以分隔“替代”模式,將其讀取為“或”。

^\d{5}$  OR  ^\d{5},\d{5}$  OR  ^\d{5},\d{9}$

只需將逗號前的部分設為可選,這樣它就只能匹配1234512345,

^(?:\d{5}|\d{9})(?:,(?:\d{5}|\d{9}))?,?$

DEMO

暫無
暫無

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

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