礼物的正则表达式只有数字

时间:2012-11-29 16:12:29

标签: php regex

我需要在PHP中验证一个数字,特别是在一个slug中传递的数据库ID,但似乎无法正确使用正则表达式...

我无法使用is_numeric(),因为它不会过滤我需要的数字,同样处理ctype_digit()

// Values to Test
$tests = [42, '42', '42a', 'a42', '042', 1337, 0, '0', TRUE, FALSE, '1e4', 'not numeric', 9.1, '9.0', ''];

// RegEx
return !preg_match("/[^0-9]/", $val);

它主要工作,但我需要在RegEx中测试一个值,FALSE''都会返回有效...

我已经尝试return !preg_match("/[^0-9]{1}/", $val);检查有效长度(非值)为1,但我似乎无法正确使用...

我已经检查了样品和放大器来自http://davidwalsh.name/php-validatie-numeric-digits的评论,但无法使任何示例代码生效...

有人知道RegEx的目前只有数字吗?

2 个答案:

答案 0 :(得分:6)

为什么要对逻辑进行双重反转。你能做的最简单的事情是断言整个字符串由数字组成(准确地说是1位或更多位数):

return preg_match('/^[0-9]+$/', $val);

return preg_match('/^\d+$/', $val);

答案 1 :(得分:0)

试试这个:

return !preg_match("^[0-9]+$",$val);