Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何修复正则表达式以计算数学表达式是否有效_C#_Regex - Fatal编程技术网

C# 如何修复正则表达式以计算数学表达式是否有效

C# 如何修复正则表达式以计算数学表达式是否有效,c#,regex,C#,Regex,我正在尝试用c#构建一个简单的计算器,并在将表达式发送到“Solve method”之前使用一种方法检查表达式是否有效。但我不明白为什么支票总是返回错误 bool validExpression = Regex.IsMatch(textBoxValue, @"^(\d+([,]\d+)?[*\/+-])+(\d+([,]\d+)?)$"); 我试图匹配如下表达式:2,4+3/2,1*22。 我尝试过的所有在线regex测试人员都告诉我,我的regex可以工作,但c#不同意我的观点,因为它总是返

我正在尝试用c#构建一个简单的计算器,并在将表达式发送到“Solve method”之前使用一种方法检查表达式是否有效。但我不明白为什么支票总是返回错误

bool validExpression = Regex.IsMatch(textBoxValue, @"^(\d+([,]\d+)?[*\/+-])+(\d+([,]\d+)?)$");
我试图匹配如下表达式:2,4+3/2,1*22。 我尝试过的所有在线regex测试人员都告诉我,我的regex可以工作,但c#不同意我的观点,因为它总是返回false

bool validExpression = Regex.IsMatch(textBoxValue, @"^(\d+([,]\d+)?[*\/+-])+(\d+([,]\d+)?)$");

我做错了什么?

谢谢大家的意见,我觉得自己真的很愚蠢,因为我已经在这个问题上工作了几个小时,但它从来没有像预期的那样工作过。我不知道为什么,但在关闭VisualStudio并重新启动计算机后,regex工作了。
我意识到表达式中存在一些缺陷,但出于我的简单需要,这就足够了。

请发布一条消息,当我尝试您的模式和示例字符串时,它成功了。对于提供的表达式,使用字符串而不是
textBoxValue
我得到了一个
true
结果。不过,我必须提醒您,有很多方法可以破坏这种模式,因此只有当您想要处理的允许格式非常有限时,这种方法才会起作用。例如,这不匹配,
“-3*4”
。您可能希望构建一个真正的标记器和解析器,迟早您将不得不停止仅仅依赖单个正则表达式,而开始解析。在这一点上,坐下来把你想要接受的语言的语法形式化通常是个好主意。我希望你的示例表达式的评估者最终得到33.8285714。。。。。。结果呢?我这样问是因为你有+和*,如果你没有正确的关联和优先级,你会得到错误的结果。