PHP验证字符串只包含计算器的'0-9','。','*','/',' - ','+'?

时间:2014-09-11 14:10:14

标签: php if-statement while-loop preg-match calculator

我正在尝试编写一个php计算器的代码,该计算器从左边开始编写,按操作顺序编写简单的语句,如:

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

但如果某人键入的值不是'0-9', '.', '*', '/', '-', '+'之一,则while语句将永远不会退出。 if(preg_match())之前的while可以解决问题,但我对如何使用它并不是很熟悉

2 个答案:

答案 0 :(得分:2)

使用此正则表达式

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

You don't need to escape other characters than \, -, ^, ] and the delimiter in character classes你也可以避免逃避其中的大部分内容。

答案 1 :(得分:1)

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

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

你应该在[]之间传递字符集(逃避任何特殊字符),告诉你需要1个或多个字符,并告诉它必须以charset开头和结尾,这意味着整个字符串应该与表达式匹配(否则你将匹配部分字符串)