仅Php数字验证函数

仅Php数字验证函数,php,validation,Php,Validation,我只想为数字创建一个验证函数,事实上,我有那些可以正常工作的函数,我自己也尝试创建一个,但不幸的是它不起作用。以下是字母数字和其他工作正常的代码: // Validators private function custom($validator, $value) { return call_user_func($validator, $value, $this->request, $this->id); } private function alphanumeric($va

我只想为数字创建一个验证函数,事实上,我有那些可以正常工作的函数,我自己也尝试创建一个,但不幸的是它不起作用。以下是字母数字和其他工作正常的代码:

// Validators
private function custom($validator, $value)
{
    return call_user_func($validator, $value, $this->request, $this->id);
}

private function alphanumeric($value, $custom)
{
    return preg_match('/^(['.$custom.'a-z0-9_]*)$/i', $value);
}

private function valid_email($value)
{
    return preg_match('/^\S+@\S+\.\S+$/', $value);
}
我试图通过修改字母数字来创建一个:

private function numbers_only($value, $custom)
{
    return preg_match('/^(['.$custom.'0-9_]*)$/i', $value);
}
这个怎么了

编辑: 我还有一个JS帮助处理表单,对于字母数字,它是:

Form.prototype.alphanumeric = function(value, custom)
{
    return !value.replace(new RegExp('['+custom+'a-z0-9_]', 'ig'), '').length;
};

什么是仅用于数字的JS?

如果只需要数字,请从函数中删除
$custom
部分。
/i
表示不区分大小写的匹配,这与数字匹配无关,因此可以删除

private function numbers_only($value)
{
    return preg_match('/^([0-9]*)$/', $value);
}
上面的表达式将匹配零个或多个数字,因此允许空白输入。要至少需要一个号码,请将
*
更改为
+
,如中所示

return preg_match('/^([0-9]+)$/', $value);
[0-9]+
可以缩写为
\d+
。由于您没有捕获匹配数组中的值,因此不需要通过包含
()
捕获组来增加额外的开销。这也可以省略

return preg_match('/^\d+$/', $value);
或者完全跳过正则表达式。。。 最后,如果您已经做到了这一点,并且只匹配整数,那么只需执行以下操作就更容易且资源消耗更少:

// If you really intend to match numbers only, and not all numeric values
// which might include .,
function numbers_only($value)
{
  return ctype_digit(strval($value));
}

如果只需要数字,请从函数中删除
$custom
部分。
/i
表示不区分大小写的匹配,这与数字匹配无关,因此可以删除

private function numbers_only($value)
{
    return preg_match('/^([0-9]*)$/', $value);
}
上面的表达式将匹配零个或多个数字,因此允许空白输入。要至少需要一个号码,请将
*
更改为
+
,如中所示

return preg_match('/^([0-9]+)$/', $value);
[0-9]+
可以缩写为
\d+
。由于您没有捕获匹配数组中的值,因此不需要通过包含
()
捕获组来增加额外的开销。这也可以省略

return preg_match('/^\d+$/', $value);
或者完全跳过正则表达式。。。 最后,如果您已经做到了这一点,并且只匹配整数,那么只需执行以下操作就更容易且资源消耗更少:

// If you really intend to match numbers only, and not all numeric values
// which might include .,
function numbers_only($value)
{
  return ctype_digit(strval($value));
}
使用

返回值为真或假

使用

在PHP中,返回值为真或假,对于“仅限数字”验证,可以使用不同的方法:

  • 是整数还是整数
  • 这是数字吗
  • 正则表达式
  • CTU型数字
  • 过滤变量
是\u整数()

对于此函数,这些值无效:“0010”、“123”

是数值的()

对于此函数,这些值是有效的:1.3、+1234e44和0x539

过滤变量()

对于此函数,“00123”值无效

结论

似乎只有regexctype\u digit可以正常工作

测试

在PHP中,对于“仅数字”验证,您可以使用不同的方法:

  • 是整数还是整数
  • 这是数字吗
  • 正则表达式
  • CTU型数字
  • 过滤变量
是\u整数()

对于此函数,这些值无效:“0010”、“123”

是数值的()

对于此函数,这些值是有效的:1.3、+1234e44和0x539

过滤变量()

对于此函数,“00123”值无效

结论

似乎只有regexctype\u digit可以正常工作

测试


除非您想允许尾随新行,否则请使用D标志。除非您想允许尾随新行,否则请使用D标志。与
ctype\u digit
对应的JS是什么?@Jamescoo认为没有。在JavaScript中,通常使用正则表达式。与
ctype\u digit
相对应的JS是什么?@Jamescoo认为没有。在JavaScript中,通常使用正则表达式。请谨慎使用。像科学记数法
1e4
之类的内容将返回true。点和负数也将被接受。请谨慎使用。像科学记数法
1e4
这样的东西将返回true。点和负数也将被接受。