[英]what will be the regular expression of date format 'dd-M-y'
什么是日期格式的正则表达式,如'01-Aug-12'.
我在asp.net应用程序中有dd-My
的日期格式,并希望从asp.net regular expression validator control
验证它。
一个非常基本的格式检查将是:
\d{2}-[A-Za-z]{3}-\d{2}
看到自己在这里 。
要实际验证,我们需要像@Brijesh Gandhi建议的一天检查,然后添加一个完整的月份列表,如下所示:
([12]\d|0[1-9]|3[0-1])-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\d{2}
如果你想允许像aug
这样的小写月,你可以添加不区分大小写的修饰符?i:
像这样......
([12]\d|0[1-9]|3[0-1])-(?i:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\d{2}
...但是这也会允许一个月,例如aUg
- 仅允许第一个字符为大写或小写可能是最正确的。
([12]\d|0[1-9]|3[0-1])-([Jj]an|[Ff]eb|[Mn]ar|[Aa]pr|[Mm]ay|[Jj]un|[Jj]ul|[Aa]ug|[Ss]ep|[Oo]ct|[Nn]ov|[Dd]ec)-\d{2}
在此处查看此最终版本。
请注意,这仍然无法检测到无效日期,例如30-Feb-12。 不接受这些特殊日期的正则表达式将非常长/丑。 即使使用Javascript的Date.parse(...)
/ new Date(...)
也无法检测到它们,因为它乐意接受上述不存在的日期,并返回3月1日。 所以要100%正确,你需要自己做复杂的编码,或者使用像datejs这样的库。
编辑1:缩短了@Brijesh Gandhi的日期检查,更新了Regexr链接。
编辑2:备注正确性。
为何选择regexp? 我会用它验证它
DateTime.TryParse(...)
无论如何,正则表达式的基本形式可能是
[0-3][0-9]-[A-Z][a-z][a-z]-[0-9][0-9]
这可能比什么都没有好。
这不会太优雅,但如果你想使用正则表达式来验证日期,它就在这里:
(
(
31-(Jan|Mar|May|Jul|Aug|Oct|Dec)| # months with 31 days
(0[1-9]|[12]\d|30)-(Jan|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)| # months with 30 or 31 days
(0[1-9]|1\d|2[0-8])-Feb # February up to 28th
)
-\d\d # any two digits represent the year
)|
(
29-Feb-([02468][048]|[13579][26]) # February 29th
)
此正则表达式不接受无效日期,如00-Aug-00
32-Aug-00
和29-Feb-01
同时接受有效日期,包括闰日( 29-Feb-04
)。 请注意 ,我们假设00
代表2000
,而不是1900
。 所以,我们接受了29-Feb-00
闰日!
看到它的实际效果 :
((31-(Jan|Mar|May|Jul|Aug|Oct|Dec)|(0[1-9]|[12]\d|30)-(Jan|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)|(0[1-9]|1\d|2[0-8])-Feb)-\d\d)|(29-Feb-([02468][048]|[13579][26]))
在Javascript中 ,添加一个i
作为第二个参数:
var re = new RegExp(regexStr, "i");
在ASP.NET中,使用RegexOptions.IgnoreCase :
Regex re = new Regex(regexStr,RegexOptions.IgnoreCase);
正则表达绝对不是这里的方式。 我们可以做一个简单的Date.Parse
,如果日期无效,则返回NaN
。
var myDate = '01-Aug-12';
var isValidDate = !isNaN( Date.parse( myDate ));
试试这个正则表达式
([1-2][0-9]|[0][1-9]|[3][0-1])-[a-zA-Z][A-Za-z][a-zA-Z]-[0-9][0-9]
根据此正则表达式[0-3][0-9]-[AZ][az][az]-[0-9][0-9]
00-aug-12
无效日期
这是日期格式dd-MMM-yy
每个组合的正则表达式:
[0123][0-9]-[JFMASOND][aepuco][nbrylgptvc]-[0-9][0-9]
请注意月份部分过于严格,但您仍然可以提供无效日期。 也许最好尝试解析日期并检查它是否有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.