php 正则表达式 匹配1到32 如何匹配? 这样可不可以[1-32]
4个回答
2013-06-14 · 知道合伙人互联网行家
关注
展开全部
正则是按位解析匹配的,所以[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的正则啦
展开全部
应该不行吧
就拆成两位数字呗
第一位匹配1-3 第二位匹配0-9
就拆成两位数字呗
第一位匹配1-3 第二位匹配0-9
追问
这样匹配会超出点范围 比如39也是被允许的。 就是不知道怎么做··
追答
哦有道理我想简单了
其他的还真没想出来不然就那样 分成1-30然后并上31和32
^([1-2][0-9]|30|31|32)$
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(\d+|[12]\d|3\d)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已经修正,并进行了测试
^([1-2][0-9]|3[0-2]|[0-9])$
^([1-2][0-9]|3[0-2]|[0-9])$
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询