可以使用正则表达式(php),例如“>”或'如果不是'?
例如:我有一个5号字符串'XXXXX':'00054','47690','20593'......
我需要一个验证的正则表达式:
我有这个:'/ ^ [0-9] {5} $ /'但不验证大于'00001'!
我正在寻找像'>'这样的东西或'如果不是00000'......
由于
PS:我知道可以用:if((int)$ string> 1)
答案 0 :(得分:3)
当我坚持使用正则表达式时 - 我总是问自己的第一个问题是“我正在描述的是常规语言吗?” - 回答这个问题的最简单方法是尝试绘制有限状态机 - 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]
P.S。上面的图片是不完整的,只是为了展示如何启动有限状态机的图解 - 我快速绘制它,因此它没有双圆圈来显示“最终”状态,树不会一直走低至5位数。如果你有兴趣,我可以完成树的其余部分,但认为在这种情况下它会有点过分。
答案 1 :(得分:1)
我可以找出两种方法:
/^(?!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个位置之一中包含一个非零数字。