0

我需要验证 PHP 中的一个数字,特别是在 slug 中传递的 DB 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 的当前和唯一数字

4

2 回答 2

6

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

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

或者

return preg_match('/^\d+$/', $val);
于 2012-11-29T16:14:19.913 回答
0

尝试这个:

return !preg_match("^[0-9]+$",$val);
于 2012-11-29T16:16:44.867 回答