首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP Regex -接受除1以外的所有正数

PHP Regex -接受除1以外的所有正数
EN

Stack Overflow用户
提问于 2013-09-26 17:13:43
回答 5查看 263关注 0票数 1

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

代码语言:javascript
复制
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),但到目前为止,我失败得很厉害:(

成功了!!

我要查找的正则表达式看起来如下所示

代码语言:javascript
复制
^([2-9]|[2-9]\d|[1-9]\d{1,})$
EN

回答 5

Stack Overflow用户

发布于 2013-09-26 17:16:50

只需使用negative lookahead即可排除所有以0结尾为1的模式:

代码语言:javascript
复制
/^(?!0*1?$)\d+$/

如果不带括号读取,此正则表达式将匹配由一个或多个十进制数字组成的任何内容。括号中包含一个断言,该断言仅当模式0*1?$无法从输入开头开始匹配时才匹配正则表达式,因此这将删除所有0和带有任意数量的前置0的1的场景。

票数 6
EN

Stack Overflow用户

发布于 2013-09-26 17:17:24

在匹配所有0和1的结果上使用否定

代码语言:javascript
复制
if(!preg_match("^[01]+$",$string)) {...}
票数 2
EN

Stack Overflow用户

发布于 2013-09-26 17:17:52

你想错了。

代码语言:javascript
复制
^[01]+$

将匹配所有包含0或1的onyl。

如果匹配拒绝它,如果它不匹配,请检查它是一个有效数字,您应该有一个匹配

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19024027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档