您应该记住,正则表达式是为匹配日期(或不匹配)而设计的。说一个日期是有效的,这是一个复杂得多的工作,因为它将需要大量的异常处理(请参阅leap年条件)。
让我们首先将月份(1-12)与可选的前导0相匹配:
0?[1-9]|1[0-2]
要匹配日期,还可以选择带前导0:
0?[1-9]|[12][0-9]|3[01]
并匹配年份(假设范围1900-2999):
(?:19|20)[0-9]{2}
分隔符可以是空格,破折号,斜杠,空白等。可以随意添加任何您感觉可以用作分隔符的内容:
[-\\/ ]?
现在,您将整个事情串联起来并得到:
(0?[1-9]|1[0-2])[-\\/ ]?(0?[1-9]|[12][0-9]|3[01])[-/ ]?(?:19|20)[0-9]{2} // MMDDYYYY (0?[1-9]|[12][0-9]|3[01])[-\\/ ]?(0?[1-9]|1[0-2])[-/ ]?(?:19|20)[0-9]{2} // DDMMYYYY (?:19|20)[0-9]{2}[-\\/ ]?(0?[1-9]|1[0-2])[-/ ]?(0?[1-9]|[12][0-9]|3[01]) // YYYYMMDD
如果您想变得学究一些,可以使用向后引用以确保两个分隔符相同:
(0?[1-9]|1[0-2])([-\\/ ]?)(0?[1-9]|[12][0-9]|3[01])\2(?:19|20)[0-9]{2} // MMDDYYYY ^ refer to [-/ ] (0?[1-9]|[12][0-9]|3[01])([-\\/ ]?)(0?[1-9]|1[0-2])\2(?:19|20)[0-9]{2} // DDMMYYYY (?:19|20)[0-9]{2}([-\\/ ]?)(0?[1-9]|1[0-2])\2(0?[1-9]|[12][0-9]|3[01]) // YYYYMMDD
本文向大家介绍Java程序匹配日期,包括了Java程序匹配日期的使用技巧和注意事项,需要的朋友参考一下 首先,我们考虑了以下两个日期。 现在,使用该方法比较两个日期。根据返回值显示结果。 示例 输出结果
问题内容: 我在Python中使用什么正则表达式来匹配这样的日期:“ 11/12/98”? 问题答案: 与其使用正则表达式,不如将字符串解析为对象通常更好: 然后,您可以访问日,月和年(以及小时,分钟和秒)作为对象的属性: 要测试用正斜杠分隔的数字序列是否表示有效日期,可以使用一个块。无效的日期将引发: 如果您需要搜索更长的字符串以获取日期,则可以使用正则表达式来搜索以正斜杠分隔的数字: 当然,无
我有以下字符串: <代码>2020年4月22日14:10example@example.com 我编写了以下正则表达式:<代码>^(\d{2,4}\/?) 为什么第一组只匹配日期的最后一部分,而不是整个日期,我如何解决这个问题? https://regex101.com/r/Pc4McX/1/
问题内容: 我要匹配具有以下格式的日期: 2010-08-27、2010 / 08/27 现在,我对实际可行的日期不是很确定,只是日期格式正确。 请告知正则表达式。 谢谢 问题答案: 您可以使用模块来解析日期: 输出: 因此,捕获将告诉您日期是否匹配: 为了允许使用各种格式,您可以测试所有可能性,或者先解析字段:
有人能帮我吗?我正在使用$lookup在MongoDB中加入以获取日期在日期“X”和日期“Y”之间的所有订单,chef_id是“P”。“日期”部分有问题,没有提供日期的数据。但是当我在单个查找查询中使用它时,它可以正常工作并在日期之间提供数据。但是当我使用$lookup申请加入时,它不会提供数据。这是我的查询 谁能帮帮我。 我的收藏在这里“订购”收藏 这是我的用户收藏 }
我和ElasticSearch一起工作。当我执行此查询时: 我得到了我想要的(所有的结果,其中有参考黑莓,但不是Q10)。 但是,我想限制搜索的字段只限于“title”字段。例如,_source文档有标题、正文、标签等,我只想搜索标题。ElasticSearch“匹配”似乎很适合我... 虽然这只成功地搜索了标题,但它仍然返回标题中带有Q10的结果,这与上面的搜索不同。 我正在看比赛文档,但似乎不