雷克斯和我的关系又爱又恨。我需要匹配(接受)除数字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我尝试了[^1][|\d+]的一些变体(试图一次锁定一个数字:D),但到目前为止,我失败得很厉害:(
成功了!!
我要查找的正则表达式看起来如下所示
^([2-9]|[2-9]\d|[1-9]\d{1,})$发布于 2013-09-26 17:16:50
只需使用negative lookahead即可排除所有以0结尾为1的模式:
/^(?!0*1?$)\d+$/如果不带括号读取,此正则表达式将匹配由一个或多个十进制数字组成的任何内容。括号中包含一个断言,该断言仅当模式0*1?$无法从输入开头开始匹配时才匹配正则表达式,因此这将删除所有0和带有任意数量的前置0的1的场景。
发布于 2013-09-26 17:17:24
在匹配所有0和1的结果上使用否定
if(!preg_match("^[01]+$",$string)) {...}发布于 2013-09-26 17:17:52
你想错了。
^[01]+$将匹配所有包含0或1的onyl。
如果匹配拒绝它,如果它不匹配,请检查它是一个有效数字,您应该有一个匹配
https://stackoverflow.com/questions/19024027
复制相似问题