PHP正则表达式-1个或多个整数的值
嘿,我正在尝试在PHP中执行输入验证,以确保输入的股票值至少为1个正整数,范围为0-9。不应包含任何特殊字符 例如,以下任何值都应有效:PHP正则表达式-1个或多个整数的值,php,regex,input,validation,Php,Regex,Input,Validation,嘿,我正在尝试在PHP中执行输入验证,以确保输入的股票值至少为1个正整数,范围为0-9。不应包含任何特殊字符 例如,以下任何值都应有效: 7 0 32 47534 asdf 35/gdf ../34. etc.. 以下内容应无效: 7 0 32 47534 asdf 35/gdf ../34. etc.. 我使用下面的if语句检查“$original_stock”的正整数值 另外,我有一个price字段,应该验证为int或double 如果有比使用正则表达式更简单的替代方法,那也没关
7
0
32
47534
asdf
35/gdf
../34.
etc..
以下内容应无效:
7
0
32
47534
asdf
35/gdf
../34.
etc..
我使用下面的if语句检查“$original_stock”的正整数值
另外,我有一个price字段,应该验证为int或double
如果有比使用正则表达式更简单的替代方法,那也没关系
提前感谢:)试试这个regexp:
/^\d+$/
现有regexp的问题是,它只匹配只有一个数字的字符串
对于验证int或double:
/^\d+\.?\d*$/
请注意,regexp要求至少有一个数字。您可能需要使用
is_int
使用:
+
表示“一个或多个”。如果没有它,您的正则表达式将只匹配一个位数。或者您可以使用更简单的变体:
/^\d+$/
对于浮动,请尝试以下操作:
/^\d+(\.\d{1,2})?/
这将匹配一个或多个数字,可选地后跟一个
和一个或两个数字。(即,.12
将不匹配。)
为了省去一些麻烦,您还可以使用和函数
最后,;注意你的支票是错的<如果失败,code>preg_match将返回0,因此您应该将其编写为:
if (!preg_match("/^\+$/", $original_stock)) {
// error
}
(注意
!
)。不要重新发明比现有车轮慢的车轮,使用摩托车:
我正好遇到了这个问题,用正则表达式解决了它。
我认为问题在于你的爱护
/^[0-9]$/
我把它搬到了教室里,得到了我需要的结果
function validate_int($subject)
{
//Pattern is numbers
//if it matches anything but numbers, we want a fail
$pattern = '/[^0-9]/';
$matches = preg_match($pattern, $subject);
if($matches > 0)
return false;
else
return true;
}
我尝试了第一个和第二个,但是如果输入是“30”,那么它会导致任何一种错误。你说的“导致错误”是什么意思?请注意,这些正则表达式只要求数字,特别是没有空格。它使用“preg_match”函数不匹配,因此为$error变量分配一个字符串。顺便说一句,这个数字没有任何空格或任何东西。刚30岁,直接从数据库中提取。编辑了我的答案。匹配有效,但您没有正确测试。
is\u int
如果输入来自表单,则不会进行匹配,只有是数值的。无论哪种方式,您都在验证负整数,可能还有非整数。
function validate_int($subject)
{
//Pattern is numbers
//if it matches anything but numbers, we want a fail
$pattern = '/[^0-9]/';
$matches = preg_match($pattern, $subject);
if($matches > 0)
return false;
else
return true;
}