如何使用PHP验证仅用于数字的文本输入

时间:2014-03-01 15:24:47

标签: php regex html5 validation numbers

我有一个用于收集数据的HTML5表单,其中一个输入用于电话号码。我正在使用php来验证用户输入的所有数据。我想验证用户是否只使用preg_match()函数输入了数字(从0到9)。我使用“/ [^ 0-9] /”作为正则表达式模式但由于某种原因它只允许字符(从a到z)被验证。 为什么会这样?

5 个答案:

答案 0 :(得分:0)

'^'表示字符串的开头,只有当它是第一个字符时。否则意味着“不”。所以你的表达式匹配的不是数字(Carets in Regular Expressions)。

正确的表达式是'/ ^ [0-9] * $ /',如另一个答案所述。

答案 1 :(得分:0)

function num_only($num){
 // will return only numbers in a string
  return preg_replace("/[^0-9,.]/", "", $num);
}
  

function numeric($num){
    // will check if is numeric
    $int = $num;
    if(empty($int) or strcmp(preg_replace("/[^0-9,.]/", "", $int), $num) != 0 )
    {
        return false;   

    }
    else return true;
}
  

//将检查字符串是否为数字

is_numeric($number);

答案 2 :(得分:0)

/**
 * Checks if $var is Integer
 * 
 * @param $var
 * @param bool $emptyAllowed
 * @return bool
 */
public function isInteger($var, bool $emptyAllowed = false): bool
{
    $num = '' . $var;

    if(empty($num)) {
        return $emptyAllowed;
    }

    return  preg_match("/^[0-9]+$/", $num) === 1;
}

答案 3 :(得分:-1)

试试这个: '/^[0-9]*$/'

答案 4 :(得分:-1)

试试这个:

/[0-9]+/

匹配任何数字。