我正在尝试编写一个php计算器的代码,该计算器从左边开始编写,按操作顺序编写简单的语句,如:
$equation = '5.2 + 3.36 * 0.80';
while(!is_Numeric($equation))
{
//perform operation
}
但如果某人键入的值不是'0-9', '.', '*', '/', '-', '+'
之一,则while
语句将永远不会退出。 if(preg_match())
之前的while
可以解决问题,但我对如何使用它并不是很熟悉
答案 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开头和结尾,这意味着整个字符串应该与表达式匹配(否则你将匹配部分字符串)