php - 正则表达式 (PHP) => 大于或不大于

标签 php regex

可以在正则表达式 (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 个数字)。 half done finite state

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

[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 位数。如果你有兴趣,我可以完成树的其余部分,但我认为在这种情况下这样做有点过分了。

编辑 根据对蜈蚣鸭的需求 - 这里有一张更完整的图 larger finite state machine

关于php - 正则表达式 (PHP) => 大于或不大于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38576711/

相关文章:

php - 将现有数据库与 Redbean 一起使用

php - 文本区域中的段落

ruby - 如何使用 Ruby 匹配较长字符串中以 'H' 开头的 10 个字符的子字符串?

python - Python 中的正则表达式用于检测整数、 float 或科学记数法中的数字

java - Java 最多只拆分 5 个逗号

php - php-Google云端硬盘上的XAMPP

php - 如何将 SCORM 2004 session_time 格式转换为 SQL 中可用的日期时间格式

ruby-on-rails - 检查一个字符串中的单词是否在另一个字符串中的最快方法是什么?

javascript - 简单 `replace()` 的第二个参数的问题

PHP、MySQL : Is it possible to cache a subquery?