0
      $var = 3;
        if ($cleanvar = preg_match('/^[0-9]{0,2}$/', $var)) 
            {
                echo $cleanvar; echo $var; exit();
            }
        else
              . . .

奇怪的输出。这导致我的cleanvar回声仍然回声。为什么会这样?这样做的目的是仅匹配整数,例如 1 位或 2 位数字。例如(1、2、4、38、24)1var3regex

他们是我的正则表达式的问题吗?或者是什么导致了这种奇怪的行为?

4

4 回答 4

3

$cleanvar只是对或错。您正在查找长度在 0 到 2 位之间的数字(从字符串的开头到结尾,因此不允许使用其他字符)。

编辑:如果匹配则返回 1,否则返回 0。

有关更多信息,请参见:http: //us3.php.net/preg_match

于 2012-10-12T00:40:20.700 回答
0

如果您尝试验证输入值,则只需查看preg_match. 使用+运算符匹配“一个或多个前面的元素”。

if (preg_match('/^[0-9]+$/', $var)) {
    // we matched a number only, so we know $var is clean
} else {
}

如果需要从输入字段中提取数字,可以使用捕获组:

if (preg_match('/([0-9]+)/', $var, $matches)) {
    $num = $matches[1];
} else {
}

请注意,这不匹配整个输入,但会返回它在输入中找到的第一个数字$var

于 2012-10-12T00:53:46.113 回答
0

$var如果你想设置它,后面应该跟着一个数组。{1,2}如果匹配 >=1 ,您可能希望更改为。

于 2012-10-12T00:44:43.130 回答
0

您的正则表达式是正确的,并且匹配正确。只是 preg_match 如果你得到匹配则返回 1,如果没有匹配则返回 0。请参阅文档。

于 2012-10-12T00:44:55.260 回答