我有一个实例的字符串:
"2 + 2 - 2"
,当它被计算时,应该返回int(2)
;
我正在寻找一个函数/解析器,它可以确定字符串中是否匹配任何类型的数学内容。更多示例:
"(2 + 2) / 2"
"(4 / 8) * 12"
"128 * 8"
不需要计算和计算这些数学表达式,只需要一个函数,它将确定(True/False
返回值),如果语句是这种数学类型。
使用正则表达式或其他什么方法可以实现吗?谢谢!
发布于 2012-03-22 22:49:20
参见eval。例如,您可以这样做:
$result = INF;
try {
eval("$result=" + myMathExpression); // Evaluate here
} catch (Exception $e) {
}
if($result != INF) echo("Expression is a valid mathematical expression.");
小心点,因为任何代码都会被评估!
发布于 2012-03-22 22:47:55
也许在运行时将其作为php运行,并检查响应值是否返回为数字。看看这个。http://php.net/manual/en/function.eval.php
发布于 2012-03-22 22:51:19
如果您知道要解析的表达式类型,可以尝试使用正则表达式。如果您正在尝试验证+
、*
、-
和\
的二元运算符,那么像^\d+\s*(\+|-|\*|\\)\s*\d+
这样的代码应该会产生true。因此它将验证诸如3 + 3
、2 - 0
等项。
https://stackoverflow.com/questions/9824552
复制相似问题