如何使用PHP验证仅针对数字的文本输入
我有一个HTML5表单来收集数据,其中一个输入是电话号码。我使用php验证用户输入的所有数据。我想验证用户是否使用preg_match()函数只输入了数字(从0到9)。我使用“/[^0-9]/”作为正则表达式模式,但出于某种原因,它只允许验证字符(从a到z)。 为什么会发生这种情况?请尝试以下方法:如何使用PHP验证仅针对数字的文本输入,php,regex,html,validation,numbers,Php,Regex,Html,Validation,Numbers,我有一个HTML5表单来收集数据,其中一个输入是电话号码。我使用php验证用户输入的所有数据。我想验证用户是否使用preg_match()函数只输入了数字(从0到9)。我使用“/[^0-9]/”作为正则表达式模式,但出于某种原因,它只允许验证字符(从a到z)。 为什么会发生这种情况?请尝试以下方法: '/^[0-9]*$/''^'仅当字符串是第一个字符时才指示字符串的开头。否则它的意思是“不”。所以你的表达式匹配的不是数字() 正确的表达式应该是另一个答案中提到的“/^[0-9]*$/” 试试这
'/^[0-9]*$/'
'^'仅当字符串是第一个字符时才指示字符串的开头。否则它的意思是“不”。所以你的表达式匹配的不是数字()
正确的表达式应该是另一个答案中提到的“/^[0-9]*$/” 试试这个:
/[0-9]+/
它匹配任何数字
function num_only($num){
// will return only numbers in a string
return preg_replace("/[^0-9,.]/", "", $num);
}
//将检查字符串是否为数字
这是可行的,但为什么不改用速记
\d+
?或者更明确地说-[:digit:
@AmalMurali\d
匹配[0-9]
和其他数字,如东部阿拉伯数字
。由于问题只涉及0到9之间的数字,因此在这里使用[0-9]
@Dr.Kameleon更合适。您应该使用^$
分隔符。否则,您的模式也可能匹配abc012345xyz,而这不是OP想要的
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);