是否可以用正则表达式来判断一字符串数是否为符合要求的算术表达式
“A+B-C-.......+N”
1. 算术式中 A,B,C....N为不重复的N个自然数。
2. 该算术式中只有加减运算。如果可以,请指点改如何写这样的正则表达式?

解决方案 »

  1.   

    最好一个正则表达式搞定,因为我判断的频率不高。
    在C#中,只要验证输入字符是否符合过则,不需要其判断他说明
    例如“1+0+2” --> 结果False 
        “1+3+2-”--> 结果False 
        “1+3+2+5” --> 结果True 
      

  2.   

    判断频率不高,那就完全可以分开写        //方法
            private bool checkFormula(string src)
            {
                Regex reg0 = new Regex(@"\b0\b");
                Regex reg1 = new Regex(@"^(?:\d+[+-])*\d+$");
                Regex reg2 = new Regex(@"\b(\d+)\b(?:(?!\1).)*\1");
                if (!reg0.IsMatch(src) && reg1.IsMatch(src) && !reg2.IsMatch(src))
                {
                    return true;
                }
                return false;
            }
            //调用
                string[] test = new string[] { "1+0+2", "1+3+2-", "1+3+2+5" };
                foreach (string s in test)
                {
                    richTextBox2.Text += s.PadRight(10, ' ')  + checkFormula(s) + "\n";
                }
    /*---------输出--------
    1+0+2     False
    1+3+2-    False
    1+3+2+5   True
    */