2015-04-26 56 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”。不区分大小写。* –