可以在正则表达式 (php) 中包含诸如“>”或“if not”之类的东西 ¿?
例如:我有一个 5 位数字的字符串 'XXXXX':'00054'、'47690'、'20593'...
我需要一个正则表达式来验证:
- 5 个数字
- 大于 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]
附言上图不完整,只是为了说明如何启动有限状态机——我画得很快,所以它没有双圆圈来显示“最终”状态,树也没有一直走下去低至 5 位数。如果你有兴趣,我可以完成树的其余部分,但我认为在这种情况下这样做有点过分了。
关于php - 正则表达式 (PHP) => 大于或不大于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38576711/