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