一个正则表达式问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 21:12:08
一个匹配月份的正则表达式
我写(0?[1-9])|(1[0-2])时,验证10、11、12不能通过。
我写(1[0-2])|(0?[1-9]),就没问题了。
这是为什么?太奇怪了
.NET的验证控件,我觉得是“()”和“?”的问题。

回复 8383463:还是不行,就(1[0-2])|(0?[1-9])或者1[0-2]|0?[1-9]就没问题,
把“|”左右颠倒就验证不了“10、11、12”。

我刚才又试了一下自己用javascript写都没问题都正确,但是写在.NET验证控件里,就会出现以上问题。

回复 yeahrahxephon:不要“?”1、2、3、4、5、6、7、8、9就通不过了啊!!!

正则表达式阿

不好说阿 ,得看哪种环境下的

vim 和 grep,ed,perl, python, php, java支持的都不一样

你是在哪种环境下用的正则表达式。。?

(0[1-9])|(1[0-2])
不要?
0?表示有没有0都可以,你放在前面,而[1-9]又只能匹配一位,所以最先满足的就是(0?[1-9])这个表达式,10 11 12就不行了
----------------------
恩,不带0的就不行了,必须要求(0[1-9])在前面么?(1[0-2])|(0?[1-9])不是可以满足要求么?

(0?[1-9]|1[0-2])

楼主这样写试试,把两个括号改成一个,实现的效果和你想要的是一样的。