2012-11-08 16 views
0

我在UI上有一个日期输入控件。它会在数字输入时自动完成日期。日,月文本输入:月份部分的智能正则表达式?

目前使用的是:http://regexpal.com/

\d{1,2}(\.|\/|-)\d{1,2} 

测试,看看它的工作。

基本上是1或2位数字,后面跟着./-和1或2位数字之一。例如1月9日,1/2,1/1,将匹配

什么我希望做的(也不能!):

如果第二组数字(每月部分) 0或1,需要另一个数字

如果第二组数字是2-9,比赛

,基本上就是这样,感谢

布赖恩

+0

是您的日期将被本地化吗?在不同的本地化中,第二组并不一定代表月份 – Vlad

+0

此时不需要迎合本地化或验证日期或月份 – Ryan

回答

2

数字范围在正则表达式中有点烦人,并且可能在格式验证时单独完成。但这里是正则表达式:

\d{1,2}[/.-](0?[2-9]|1[0-2]|01|1[/.-]) 

这应该符合所有要求(包括评论中的要求)。可能的月份:

2, 3, ..., 9 
01, 02, 03, ..., 09 
10, 11, 12 
1/, 1., 1- 
+0

在http://regexpal.com/上测试,如果我输入1/1显示为匹配,但它不应该匹配,如果月份是1或0,它应该期待另一个数字 – Ryan

+0

@BrianBishop没关系,编辑我的答案。 –

+0

谢谢,现在变得非常接近:-)只有一个问题,如果用户输入1/1 /应该匹配。因此,如果月份从1开始,然后是/ .-应该匹配。 – Ryan