我正试图为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个或多个字符,还告诉它必须以字符集开始和结束,这意味着整个字符串应该与表达式匹配(否则将匹配字符串的一部分)