合并后的Reg表达式错误

时间:2015-04-26 07:14:15

标签: c# regex

  

格式:

     

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 个答案:

答案 0 :(得分:1)

根据你的条件,你的正则表达并不完美。你可以使用

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

说明:

  • \S(除空格外的所有字符)对于a-z之间的任何字符都应更改为[a-zA-Z],而不是区分大小写
  • \d结尾的
  • 应更改为[0-8]
  • 此外,您必须删除^ and $ ^[0-9]+$,因为他们会检查字符串的开头和结尾