我很难理解我如何修复这个正则表达式patteren。
它正确地验证了正常的整数,但是当我在整数的末尾添加一个点时,它仍然会验证为干净的输入。
我如何更改我的模式/ [^ 0-9] /以使其唯一的数字0-9被视为干净的输入?
$verify = 1.;
$regular_exression_filter_integer = "/[^0-9]/";
if (!preg_match ($regular_exression_filter_integer, $verify)) {
echo "clean input";
} else {
echo "bad input";
}
Clean inputs
$filter_this = 1.;
$filter_this = 1234;
Bad inputs
$filter_this = 1.1;
如上所述输入$ filter_this = 1。应该给我“BAD INPUT”,但事实并非如此。
答案 0 :(得分:1)
您不能对浮点数的整数运行正则表达式检查,只能在字符串上运行。
此外,您可以使用带有正则表达式的正preg_match
来检查输入中以可选点结尾的整数值:
$regular_expression_filter_integer = '/^[0-9]+\.?$/';
$verify = "1.";
if (preg_match ($regular_expression_filter_integer, $verify)) {
echo "clean input";
} else {
echo "bad input";
}
请参阅demo
答案 1 :(得分:-2)
你也许可以试试这个。
$verify = 1;
$pttn = "@^[\d{1}]$@";
$res=preg_match ( $pttn, $verify, $matches );
echo $res ? 'clean input' : 'bad input';