需要帮助查找或使RegEx与MM/YY或MM/YYYY格式匹配.我的RegExFu很弱,我甚至不确定从哪里开始写这个.
月份应为1-12岁,2009年以后的任何一项都应该有效.很抱歉之前没有提及更多细节.这用作到期日期.
我将为任何超越的人添加赏金,并验证> =今天的日期的MM/YY或MM/YYYY格式.让过期的东西超过第一个验证层是没有意义的.
我感觉很糟糕,因为我改变了我的要求,并且必须更具体地说明我在问题中所需要的内容,所以我会奖励所有那些在无价值窗口到期后回答的人.
Bru*_*oLM 12
关于什么
^(1[0-2]|0[1-9]|\d)\/(20\d{2}|19\d{2}|0(?!0)\d|[1-9]\d)$
Run Code Online (Sandbox Code Playgroud)
匹配数月
// 10 to 12 | 01 to 09 | 1 to 9
(1[0-2]|0[1-9]|\d)
Run Code Online (Sandbox Code Playgroud)
多年
// 2000 to 2099 | 1900 to 1999
// 01 to 09 | 10 to 99
(20\d{2}|19\d{2}|0(?!0)\d|[1-9]\d)
Run Code Online (Sandbox Code Playgroud)
匹配任何东西 >= 2010
/^(1[0-2]|0[1-9]|\d)\/([2-9]\d[1-9]\d|[1-9]\d)$/;
Run Code Online (Sandbox Code Playgroud)
结果:
12/2009 : false
1/2010 : true
12/2011 : true
12/9011 : true
12/07 : false
12/17 : true
Run Code Online (Sandbox Code Playgroud)
尝试:
var re = new Regex(@"(?<month>\d{2})/(?<year>\d{2}|\d{4})");
var month = re.Match(yourString).Groups["month"];
...
Run Code Online (Sandbox Code Playgroud)
另一种选择是:
if(dateStr.Length == 5)
myDateTime = DateTime.ParseExact("MM/YY", dateStr);
else
myDateTime = DateTime.ParseExact("MM/YYYY", dateStr);
Run Code Online (Sandbox Code Playgroud)
试试这个:
^(0[1-9]|1[0-2])/(19|2[0-1])\d{2}$
Run Code Online (Sandbox Code Playgroud)
约束到实际月份(1-12)和1900-2199年.
| 归档时间: |
|
| 查看次数: |
23301 次 |
| 最近记录: |