2015-04-26 89 views
-3

格式:reg表達式錯誤組合

TB-字符串1-String2的年NumericData1-NumericData1DigitAlways

實施例按照上述的格式。

TB-testdata1-testData2-2015-65789-3

這是我爲

var result = Regex.Match(testData, @"\T\B-\S{2,5}\-\S{2,5}\-[\d{4}]\-\^[0-9]+$\-[\d]"); 

     if (result.Success) 
     { 
       Return match; 
     Else 
     { 
      Return noMatch; 
     } 

它扔無效參數異常的嘗試了。

這是要求。

前兩個字母總是「TB」。不區分大小寫。

上述各項以「 - 」分隔。

String1 - >從a到z的任何字符。不區分大小寫。應該在2到5個字符之間。

String2→ - 從a到z的任何字符。不區分大小寫。應該在2到5個字符之間

年 - >始終應該是4個字符的數字數據。這是年份數據。所以它應該只是+ ve數字。

NumericData1 - >只有正數字數據。應該在2到10個字符之間。

NumericData1DigitAlways - >總是隻有0到8之間的1位數字數據。

我已經嘗試過每個部件單獨。當我將表達式連接在一起時會中斷。

謝謝你的幫助。

+1

'testdata1'如何滿足第二個要求,即'應該在2到5個字符之間。 –

+0

請顯示'testData'的定義 –

+0

@GaneshaK:請提供有效的測試示例。這是否有效:http://goo.gl/ogzGTJ? –

回答

1

根據你的情況,你的正則表達式並不完美。您可以使用

var result = Regex.Match(testData, @"[tT][bB]-([a-zA-Z]{2,5}-){2}\d{4}-\d{2,10}-[0-8]"); 

說明:

  • \S(除空間中的所有字符)應改爲[a-zA-Z]爲z之間的任何字符不區分大小寫,
  • \d結尾應改爲[0-8]因爲他們檢查字符串的開始和結束
+0

*前兩個字母總是「TB」。不區分大小寫。* –