Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP正则表达式-1个或多个整数的值_Php_Regex_Input_Validation - Fatal编程技术网

PHP正则表达式-1个或多个整数的值

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 如果有比使用正则表达式更简单的替代方法,那也没关

嘿,我正在尝试在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

如果有比使用正则表达式更简单的替代方法,那也没关系

提前感谢:)

试试这个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;
  }