我需要在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);
Run Code Online (Sandbox Code Playgroud)
它主要是工作但我需要在RegEx中测试一个值,FALSE
并且''
都返回有效...
我试图return !preg_match("/[^0-9]{1}/", $val);
检查1的有效长度(不是值),但我似乎无法正确...
我已经查看了来自http://davidwalsh.name/php-validatie-numeric-digits的示例和评论,但无法获取任何示例代码...
有没有人知道RegEx 目前只有数字?
为什么要双重逻辑.你能做的最简单的事情是断言整个字符串由数字组成(准确地说是1位或更多位数):
return preg_match('/^[0-9]+$/', $val);
Run Code Online (Sandbox Code Playgroud)
要么
return preg_match('/^\d+$/', $val);
Run Code Online (Sandbox Code Playgroud)