不要什么问题都正则
这种问题,自己Split(',')分解出来,循环判断一下不就得了

解决方案 »

  1.   

    string inputStr="";
    if(Regex.Matches(inputStr,"\d+").Count==3&&Regex.Matches(inputStr,"[-]").Count==2)
    {
    //满足条件了
    }
      

  2.   

    真是的,split一下,循环判断用不到正则表达式
      

  3.   

    你这样的话,分隔符不是逗号的情况也会满足条件的,出现大于5组数据的情况也会满足条件。这里从需求分析的话,必须先splite分割字符串,确保分割后是5个字符串的数组,再判断里面的元素是数字和减号的个数。
      

  4.   

    根本用不到正则
    public static bool ValidateData(string data)
    {
      string[] array = data.Split(',');
      if (array.Length == 5)
      {
        int count1 = 0, count2 = 0;
        foreach (string s in array)
        {
          double test;      if (count2 == "-") count2++;
          else if (double.TryParse(s, out test)) count1++;
          else break;
        }
        return count1 == 3 && count2 == 2;
      }
      return false;
    }
      

  5.   

    但此帖或许能给你些思路:  http://bbs.csdn.net/topics/380162205
      

  6.   

    正则也不是万能的,有些工作量是省不了得,你现在这种情况用split分组之后再判断比较快
      

  7.   

    还是split来得快啊,虽然代码多点,但是效率高多了
      

  8.   

    既然一定要用正则,那就罗列各种情况吧,好在就九种情况,正则如下:"^(\d+,\d+,\d+,-,-|\d+,\d+,-,\d+,-|\d+,-,\d+,\d+,-|-,\d+,\d+,\d+,-|\d+,\d+,-,-,\d+|\d+,-,\d+,-,\d+|-,\d+,\d+,-,\d+|\d+,-,-,\d+,\d+|-,\d+,-,\d+,\d+|-,-,\d+,\d+,\d+)$"
      

  9.   


    string[] str = content.Split(',');
    string condit = "0123456789";
    int i = 0; len = str.Length;
    for(; I < len; i++)
    {
    if(condit .IndexOf(str[i]) > 0)
    {
    // TD:OO Where You‘s Code
    }
    }
      

  10.   

    你的需求不能用正则,如果你选择了正则,写正则的人不知道该如何下手。
    如果有规律可循,你可以做一个可视化验证工具,选择有限的输入源,有限验证方式进行判断处理;如果无规律可循,那就只能选择CodeDOM来进行动态编译代码,将方法在运行时编译产生(记得缓存),不过这需要对方会C#,如果不会也有办法,但是就相对麻烦,你得写个傻瓜都会用的,类似易语言的开发工具,后台转换到C#代码后动态编译。
      

  11.   

    可参考这个博客中 正则表达式进行组合http://blog.csdn.net/s_521_h/article/details/41977739