我很困惑以下引发异常:
if (!filter_var(0, FILTER_VALIDATE_INT))
throw new Exception("Non numeric field passed " . $field . " when expecting a number: " . $variable . " passed instead");
Run Code Online (Sandbox Code Playgroud)
什么积极的工作好吗?我试过intval(0)但仍然没有.是零而不是整数?
我很确定这个网站上还没有真正回答过.对于一劳永逸,最小的正则表达式匹配数字字符串,该字符串在32位有符号整数范围内-2147483648,范围为2147483647.
我必须使用正则表达式进行验证 - 这是我唯一可用的选项.
我试过了
\d{1,10}
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何将其限制在有效的数字范围内.
为了帮助开发正则表达式,它应该匹配:
-2147483648
-2099999999
-999999999
-1
0
1
999999999
2099999999
2147483647
Run Code Online (Sandbox Code Playgroud)
它不应该匹配:
-2147483649
-2200000000
-11111111111
2147483648
2200000000
11111111111
Run Code Online (Sandbox Code Playgroud)
我已经设置了一个在线实时演示(在rubular上),我的尝试和上面的测试用例.
注意:将接受有效的最短正则表达式.不考虑正则表达式的效率(除非有最短长度的平局).