为什么我的正则表达式数字验证模式接受点?
why does my regular expression number verification patteren accept dots?
我很难理解如何修复这个正则表达式模式。
它正确地验证了正常的整数,但是当我在整数的末尾放置一个点时,它仍然验证为一个干净的输入。
我如何更改我的模式 /[^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",但没有。
你或许可以试试这个。
$verify = 1;
$pttn = "@^[\d{1}]$@";
$res=preg_match ( $pttn, $verify, $matches );
echo $res ? 'clean input' : 'bad input';
您不能 运行 正则表达式检查浮点数的整数,只能检查字符串。
此外,您可以将正 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
我很难理解如何修复这个正则表达式模式。
它正确地验证了正常的整数,但是当我在整数的末尾放置一个点时,它仍然验证为一个干净的输入。
我如何更改我的模式 /[^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",但没有。
你或许可以试试这个。
$verify = 1;
$pttn = "@^[\d{1}]$@";
$res=preg_match ( $pttn, $verify, $matches );
echo $res ? 'clean input' : 'bad input';
您不能 运行 正则表达式检查浮点数的整数,只能检查字符串。
此外,您可以将正 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