PHP验证字符串只包含';0-9''''*''/''-'&#


PHP validate string only contains '0-9', '.', '*', '/', '-', '+' for a calculator?

我正试图为php计算器编写代码,该计算器从左开始计算,然后按操作顺序编写简单语句,如:

$equation = '5.2 + 3.36 * 0.80';
while(!is_Numeric($equation))
{
   //perform operation
}

但是,如果有人键入的值不是'0-9', '.', '*', '/', '-', '+',则while语句将永远不会退出。while之前的if(preg_match())会起作用,但我不太熟悉如何使用它

使用此正则表达式

if (preg_match('~^[0-9.*/+-]+$~', $str)) {
    // ...
}

除了', -, ^, ]和字符类中的分隔符之外,您不需要转义其他字符,也可以避免转义其中的大部分字符。

PCRE是检查字符串是否只包含给定字符的一种非常方便的方法

if (preg_match('/^([0-9'.'*'/'-'+])+$/', $string)) { ...

您只需要在[]之间传递字符集(转义任何特殊字符),告诉您需要1个或多个字符,还告诉它必须以字符集开始和结束,这意味着整个字符串应该与表达式匹配(否则将匹配字符串的一部分)