繁体   English   中英

正则表达式(PHP)=>大于或如果不大

[英]Regular Expression (PHP) => greater that or if not

可以使用正则表达式(php),例如'>'或'if not'¿

例如:我有一个5号字符串'XXXXX':'00054','47690','20593'......

我需要一个验证的正则表达式:

  1. 5个数字
  2. 大于1

我有这个:'/ ^ [0-9] {5} $ /'但不验证大于'00001'!

我正在寻找像'>'或'如果不是00000'......

谢谢

PS:我知道可以用:if((int)$ string> 1)

当我坚持使用正则表达式时 - 我总是问自己的第一个问题是“我正在描述的是常规语言吗?” - 回答这个问题的最简单方法是尝试绘制一个有限状态机 - https://en.wikipedia.org/wiki/Finite-state_machine 在你的情况下,它是可能的,它将给你一个如何编写正则表达式的答案。 一个简单的有限状态机就可以解决这个问题了 - 第一个字符是0还是1-9? 如果它的0向下走一条路径(对下一个数字进行类似的检查),如果它的1-9向下走另一条路径(检查之后是否还有4个数字)。 半完成有限状态

看看图片的其余部分将如何发挥作用,我们可以创建一个如下所示的正则表达式:

[1-9][0-9]{4} | 0[1-9][0-9]{3} | 00[1-9][0-9]{2} | 000[1-9][0-9] | 0000[1-9]

PS上面的图片是不完整的,只是为了展示如何启动有限状态机的图示 - 我快速绘制它,因此它没有双圆圈来显示“最终”状态,树不是全部低至5位数。 如果你有兴趣,我可以完成树的其余部分,但认为在这种情况下会有点过分。

编辑通过对蜈蚣鸭的需求 - 这是一个更完整的图纸 更大的有限状态机

我可以找出两种方法:

/^(?!00000)\d{5}$/

首先检查开始时间后面是否为5个零,然后搜索5个数字。

/^(?:[1-9]\d{4}|\d[1-9]\d{3}|\d{2}[1-9]\d{2}|\d{3}[1-9]\d|\d{4}[1-9])$/

这个检查5个组合,每个组合在5个位置之一中包含一个非零数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM