如何使用正则表达式匹配数字范围

介绍

今天就跟大家聊聊有关如何使用正则表达式匹配数字范围,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

最近有个需求就是根据产品编号批量下架产品,需要下架日期为16-31号之间的产品,

比如编号为B201607280023匹配表达式如下:

^ 201607 (1 [6 - 9] [0 - 9] | 2 | 3 (0 - 1)) +

逻辑很简单,如果是必须是1或2或3开的头,如果是1开头则后面范围为6 - 9,如果是2开头则为0 - 9,如果为3开头则为0 - 1,因为7月份到31号

同理,如果要匹配前半月的数据则是:

^ B201607 (0 [0 - 9] | 1 [1 - 5])。+

<强> php正则表达式限制数字个数

如何写个正则表达式,只有4个数字才能匹配比如1234可以匹配,12345或者12数字个数不是4个的不能匹配?
\ d{4}我试过不可以,12345超过5个数字的也匹配上了,不可以
^[0 - 9]{4} $可以,改变问题:为什么\ d{4}不行能? ?

\ d{4}这个意思其实是可以匹配至少4个连续的数字,就是说123肯定匹配不上,但是像1234年,12345年,1234年美国广播公司(abc)这种,只要其中有4个数字连续的,都可以匹配上。如果想卡死只匹配四个数字,那么得加上开始和结束符^ \ d {4} $

<强>正则表达式匹配1 - 255之间的正整数

p=& # 39;美元/^ (25 [0 - 5]| 2 (0 - 4)\ d | 1 \ \ d | (1 - 9) \ d | (1 - 9)) $/& # 39;;
(i=1美元;i<美元=260;美元我+ +)
printf (“% 4 d % d \ n",我美元,preg_match ($ p $ i));

楼大体上是对的,但是没有加上单词分隔符
测试数据:
11 123 301 9 10 31 30 33
匹配出:

123
30
1
9
10

30 31日

可33见这与预期不符,因为该正则把301年拆成30与1了
正确如下:

\ b25 \ b (0 - 5) | \ b2 b (0 - 4) \ d \ | | \ b1 \ d \ d \ b \ b \ [1 - 9] d \ b | \ b \ [1 - 9] b

如何使用正则表达式匹配数字范围