PHP正则表达式 - 接受除1之外的所有正数

pth*_*fan 1 php regex

正则与我有爱与恨的关系.我需要匹配(接受)除了数字1和0之外的所有数字.将其视为数学而不是字符串,数字> = 2应匹配.另外请考虑这是Zend路由参数(reqs)的一部分所以我必须使用正则表达式,除非我想扩展Route类等等.:)

103 => 103
013 => 013
201 => 201
340 => 340
111 => 111
001 => no match
010 => 010
100 => 100
  1 => no match
000 => no match
 00 => no match
  0 => no match
Run Code Online (Sandbox Code Playgroud)

我尝试了一些变化[^1][|\d+](试图一次钉一个数字:D)但到目前为止,我已经失败了:(

搞定了!!

我正在寻找的正则表达式似乎如下

^([2-9]|[2-9]\d|[1-9]\d{1,})$
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 6

只需使用否定前瞻来排除具有全部零的模式,这些零可选地以一个结尾:

/^(?!0*1?$)\d+$/
Run Code Online (Sandbox Code Playgroud)

如果你在没有parens的情况下阅读它,这个正则表达式匹配由一个或多个十进制数字组成的任何内容.parens包含一个断言,只有当模式在输入开始时0*1?$ 不能匹配时才会使正则表达式匹配,因此这将删除所有零的场景和一个具有任意数量的前置零的场景.