php 正则表达式 匹配1到32 如何匹配? 这样可不可以[1-32]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 正则表达式 匹配1到32 如何匹配? 这样可不可以[1-32]相关的知识,希望对你有一定的参考价值。

正则是按位解析匹配的,所以[1-32]是不行的。
解析:
1、1-32,包含1位数(1-9)和2位数(10-32)
2、10-32必须切割,10-19和20-29形式一样,得到[12][0-9],30-32有3[012]
3、因此得到[1-9]|[12][0-9]|3[012]
4、考虑全匹配,因此得到/^(?:[1-9]|[12][0-9]|3[012])$/,
   ?:表示不捕获匹配,意思就是不保存括号数据
最终:
$pattern = \'/^(?:[1-9]|[12][0-9]|3[012])$/\';  //这个就是1-32的正则啦
参考技术A 应该不行吧
就拆成两位数字呗
第一位匹配1-3 第二位匹配0-9追问

这样匹配会超出点范围 比如39也是被允许的。 就是不知道怎么做··

追答

哦有道理我想简单了
其他的还真没想出来不然就那样 分成1-30然后并上31和32

^([1-2][0-9]|30|31|32)$

参考技术B (\d+|[12]\d|3\d) 参考技术C 已经修正,并进行了测试
^([1-2][0-9]|3[0-2]|[0-9])$

以上是关于php 正则表达式 匹配1到32 如何匹配? 这样可不可以[1-32]的主要内容,如果未能解决你的问题,请参考以下文章

php正则匹配数字

正则表达式匹配 PHP 注释

PHP中如何匹配多个满足正则表达式的字符串

Js正则表达式的如何写这样一个匹配规则!1) 取指定范围的内容 2)过滤指定范围的内容

正则表达式高级替换,匹配后进行运算,然后使用结果替换,怎么实现?

php 正则表达式 url匹配