其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

使用java正则表达式匹配日期

GG网络技术分享 2025-03-18 16:14 0


问题描述:

求一个正则表达式匹配日期类型
日期格式为 \"yyyy-MM-dd\",考虑到要符合多种格式,不受0的影响例如

\"2018-1-1\"

\"2018-01-01\"

\"2018-001-002\" //前面可以添加任意个0

可以忽略平年和闰年的影响,求大神给一个

网友观点:

^\\d{4}-0*((1|3|5|7|8|10|12)-0*([1-9]|[1-2]\\d|3[0-1])|(4|6|9|11)-0*([1-9]|[1-2]\\d|30)|2-0*([1-9]|[1-2]\\d))$

如何用正则表达式表达2020.10.1的日期,求各位大佬指点,挺急的!?

从你的问题描述来看,我感觉你对正则表达式的理解有些偏差。我来讲一下正则表达式是干什么的,如果你的理解本来是对的,那很好;如果不是,则可以学习一下。

这是正则表达式的英文和中文Wikepedia的地址。

https://en.wikipedia.org/wiki/Regular_expression

https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

它们英文和中文的定义如下:

A regular expression(shortened as regex or regexp;[1]also referred to as rational expression[2][3]) is a sequence of characters that define a search pattern. Usually such patterns are used by string-searching algorithms for "find" or "find and replace" operations on strings, or for input validation. It is a technique developed in theoretical computer science and formal language theory.


正则表达式(英語:Regular Expression,常简写为regex、regexp或RE),又称正規表示式正規表示法規則運算式常規表示法,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器裡,正則表达式通常被用来检索、替换那些符合某个模式的文本。


所以,正则表达式是一种定义搜索模式的字符串,它用在字符搜索算法中,来查找/查找并替换字符串。

所以,使用正则表达式的前提是,你已经有一个字符串,然后你希望通过正则来找到其中符合某种条件的字符串,或是找到后替换它们。

而你问题描述中的【如何用正则表达式表达2020.10.1的日期】,则与正则的使用逻辑不符。正确的说法应该是,你有一些字符串,如何找到其中yyyy-mm-d样式的日期。

PS:其实在理清正则的思路以后,你的问题还有其它很多细节可以讨论。比如

  1. 你写的是2020.10.1,其中最后一位的天是1位的,那么【2020.10.02】样式在不在你的需求中
  2. 2020.10.1是否需要前后有空格的,【x2020.10.1】样式的字符串,是否符合你的需求
  3. 年份你写的是2020,那么你的字符串中是否会出现公元900年这种900.12.5的情况,是否会出现公元前300年的情况,是否会出现10万年后的日期
  4. 是否要强制检查月份和天的数字,比如不能有13月,不能出现32号,是否要检查月和天的关系,比如不能出现6月31号,是否要检查闰月
  5. 还有很多情况是实际干活的情况出来的坑,比如中文的点,比如2020-10-1,你要不要支持。

这些都是随便想起来的点,你可以多想想。

标签:

提交需求或反馈

Demand feedback