我应该使用什么正则表达式来匹配此日期模式:DAY.month.YEAR
What regular expression should I use to match this date pattern: DAY.month.YEAR?
我有这个日期格式:
DAY.month.YEAR (today: 28.06.2011)
我需要一个正则表达式(RegEx)模式来匹配此日期格式。
有人能发布这个问题的解决方案吗?
派生自http://www.regular-expressions.info/dates.html:
(0[1-9]|[12][0-9]|3[01])'.(0[1-9]|1[012])'.(19|20)'d'd
这与dd.mm.yyyy格式的日期相匹配,日期介于1999年11月1日至12月31日之间。然而,它仍然会匹配无效日期,因为例如,验证闰年是用regex无法完成的(至少不太容易)。
但是,正则表达式可能是不必要的。Javascript示例:
var date = "28.06.2011".split("."); // split up the date by the dots
// parse the components into integers
var day = parseInt(date[0]);
var month = parseInt(date[1]);
var year = parseInt(date[2]);
// if you want the date in a date object, which will fix leap years (e.g. 31.02 becomes 03.03
var date = new Date(year, month - 1, day);
请注意,创建日期对象时,month
从零开始。
你使用哪种方法取决于你需要它做什么。如果要在文本中查找日期,请使用正则表达式。如果您只是想将日期解析为日期对象,请使用第二种方法。为了确保日期有效,可能需要进行一些额外的验证,因为javascript Date
对象不在乎二月有31天,它只需要结束到3天。三月份。
如果您希望匹配日期的格式,那么就足够使用:
'd'd'.'d'd'.'d'd'd'd
但是,正如David Hall在对您的问题的评论中指出的那样,您仍然需要验证代码中的日期。用正则表达式做这件事并不容易,正如你从Harpyon的回答中看到的那样,Harpyon仍然在进行"初步检查,过滤掉许多错误的可能性",也接受2011年2月31日为有效日期,并错过了法国大革命(1789年7月14日)。
相关文章:
- 如何在模式弹出窗口中使用引导程序日期和时间选择器
- jQuery日期选择器在Codeigniter和Bootsrap模式表单中不起作用
- PhoneGap 2.0(Cordova)DatePicker插件'模式'-属性以获取日期和时间
- bootstrap日期选择器轨道无法通过带有bootstrap模式的simple_form工作
- Eonasdan日期时间选择器没有'不能在联机模式下工作
- 从日期选择器引导框中选择日期后,模式隐藏
- Angular-UI引导日期选择器未在引导模式上显示
- 引导日期选择器,禁用日期 - 可能仅查看模式
- 如何使引导日期选择器选择当分钟视图模式:1时选择当月的最后一天而不是第一天
- 将表格单元格中的日期模式与 jQuery 匹配
- 模式中的引导日期选择器不起作用
- 在特定日期/时间打开模式
- 使用 dojo.formToJson 时获得不同的日期模式
- JS:使用引导日期选择器在视图模式“月”中出现结束日期问题
- 模式问题中的日期选择器
- java脚本中的Regex日期模式yyyy-mm-dd javascript
- jquery日期范围选择器无法在模式中工作
- FullCalendar列表日期's事件模式
- 模式窗口中JQuery日期选择器出现问题
- 当我们将日期选择器设置为只读模式时,如何防止鼠标指针阻塞符号