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

 我来答
Zjmainstay
2013-06-14 · 知道合伙人互联网行家
Zjmainstay
知道合伙人互联网行家
采纳数:580 获赞数:1129
http://www.zjmainstay.cn

向TA提问 私信TA
展开全部
正则是按位解析匹配的,所以[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的正则啦
haodemumu168
2013-06-14 · TA获得超过299个赞
知道小有建树答主
回答量:479
采纳率:100%
帮助的人:283万
展开全部
应该不行吧
就拆成两位数字呗
第一位匹配1-3 第二位匹配0-9
追问
这样匹配会超出点范围 比如39也是被允许的。 就是不知道怎么做··
追答
哦有道理我想简单了
其他的还真没想出来不然就那样 分成1-30然后并上31和32

^([1-2][0-9]|30|31|32)$
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友690c81e14
2013-06-14 · TA获得超过635个赞
知道小有建树答主
回答量:680
采纳率:0%
帮助的人:665万
展开全部
(\d+|[12]\d|3\d)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
womanv
2013-06-15 · TA获得超过818个赞
知道小有建树答主
回答量:898
采纳率:0%
帮助的人:1049万
展开全部
已经修正,并进行了测试
^([1-2][0-9]|3[0-2]|[0-9])$
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式