/[1-12]:[(0[0-9])|[10-59]][a|p]m/i 为什么会出错呢?

/[1-12]:[(0[0-9])|[10-59]][a|p]m/i 为什么会出错呢?

/[1-12]:[(0[0-9])|[10-59]][a|p]m/i

提示
Unmatched ) in regex; marked by <-- HERE in m/[1-12]:[(0[0-9]) <-- HERE |[10-59]][a|p]m/ at ./b.pl line 4.
是不是说括号不在正则匹配范围
你在括号前面加\


QUOTE:
原帖由 welcome008 于 2007-9-26 16:46 发表
/[1-12]:[(0[0-9])|[10-59]][a|p]m/i

提示
Unmatched ) in regex; marked by  

事实上 /[(0)])/ 就会出错

修改下吧.


QUOTE:
原帖由 perljoker 于 2007-9-26 17:18 发表
是不是说括号不在正则匹配范围
你在括号前面加\

看LZ的目的并不是要匹配括号, 而是想得到$num吧 ???
放外面好了.
就是想做一个时间判断的匹配
确认分钟数是不是在00-59范围内

然后就卡到这了,虽然后来有了更好的解决办法,但就是想知道为何这样会不成功呢?
算是bug?还是另有解释?
他写的太复杂了,偶XD了。。

如果你那个功能,我觉得觉得可以这么写
=~/:[0-5][0-9][a|p]/


QUOTE:
原帖由 welcome008 于 2007-9-27 11:14 发表
就是想做一个时间判断的匹配
确认分钟数是不是在00-59范围内

然后就卡到这了,虽然后来有了更好的解决办法,但就是想知道为何这样会不成功呢?
算是bug?还是另有解释?

正则中没有[]里面嵌套()的语法.  反过来思考, 用[()]来表示什么呢???

00-59就照楼上perljoker的正则就OK


QUOTE:
原帖由 Lonki 于 2007-9-27 12:43 发表




正则中没有[]里面嵌套()的语法.  反过来思考, 用[()]来表示什么呢???

00-59就照楼上perljoker的正则就OK

在我的例子里我是想要做二选一0[0-9],[10-59],同时为了区别不是[0-9],[10-59]二选一,所以想着加了对括弧,后来我也想到更好的办法,就是觉得这个出错了,怪怪的。


QUOTE:
原帖由 welcome008 于 2007-9-27 15:40 发表


在我的例子里我是想要做二选一0[0-9],[10-59],同时为了区别不是[0-9],[10-59]二选一,所以想着加了对括弧,后来我也想到更好的办法,就是觉得这个出错了,怪怪的。

2位数-2位数放到[]中一定不是你想要的效果, 分开匹配吧.
/(0[1-9]|1[0-2]):[0-5][0-9][ap]m/i