当前位置: 首页 > 知识库问答 >
问题:

如何拒绝包含日期格式的非连续字符的字符串

公西岳
2023-03-14

我正在尝试开发一个正则表达式,它将拒绝所提供的日期格式中的非连续字符。我希望尽可能灵活,所以我决定我的日期格式字符串可以包含YY或YYYY,MM或MMM,DD或DDD,hh mm和ss。

我已经计算出的一些正则表达式-例如,匹配以下内容将显示月份是3个字符的格式:

([M])\1{2}

我完全不知道日期格式是否包含非连续字符。例如,以下日期格式应有效:

YYYY-MM-DD hh:mm:ss
hh:mm:ss YYYY-MM-DD 
DD/MMM/YYYYhh-mm

但是这些格式应该被拒绝

YYYY-MM-DD hh:mm:ss YYYY // year appears twice
hh:mm:ss YYYY-MM-DD hh // hour appears twice
DD/MMM/YYYYhh-mm m // m not consecutive with other m

为了将来的扩展,我想允许非连续的特殊字符 (/ - .: ) etc并拒绝所有非连续的字母数字字符。区分大小写-mm和MM不一样(如上)

为了清楚起见 - 我不是在尝试验证实际日期 - 我尝试仅验证日期格式字符串。

共有1个答案

梁豪
2023-03-14

我建议检查是否至少出现一个以前已经存在的相同字符,然后否定结果:

function(text) { 
    return !/(\w)\1*(?!\1).*\1/.test(text);
}

请参阅正则表达式演示。您可以将\w更改为[YMDhms],以仅检查这六个字母。

图案细节

  • (\w) - 组 1(使用 \1 反向引用进一步引用):单词 char
  • \1* - 与组 1 中相同的字符的出现次数为零次或多次
  • (?!\1) - 设置边界,确保下一个字符与组 1 中的字符不同
  • .* - 除换行符以外的任何零个或多个字符,尽可能多
  • \1 - 与组 1 中的字符相同。
 类似资料:
  • 问题内容: 在一次采访中,要求用Java编写代码以显示没有连续重复字符的字符串。 例如:谷歌,苹果,亚马逊;它应该显示“ Amazon” 我写了代码,发现继续重复char。有什么算法或有效的方法可以找到它吗? 问题答案: class replace { 逻辑:将字符串中的字符与上一个字符进行匹配。 如果找到string [i] == string [i-1]。打破循环。选择下一个字符串。 如果您到

  • 问题内容: Java中是否有等同于php date()样式格式的格式?我的意思是,在php中,我可以反斜杠转义字符以按字面意义对待它们。即 yyyy \ y \ e \ a \ r 将成为 2010年 。我没有在Java中找到任何类似的东西,所有示例仅处理内置日期格式。 特别是,我处理JCalendar日期选择器及其 dateFormatString 属性。 我需要它,因为在我的语言环境中,需要以

  • 问题内容: 我需要一个可以告诉我字符串是否包含非字母数字字符的方法。 例如,如果字符串为“ abcdef?” 或“abcdefà”,该方法必须返回true。 问题答案: 使用Apache Commons Lang: 另一种方法是遍历String的字符并检查: 您还剩下一个问题:示例字符串“abcdefà”是字母数字,因为是字母。但我认为您希望将其视为非字母数字,对吗? 因此,您可能想使用正则表达式

  • 问题内容: 如何在Go中解析非标准的日期/时间字符串。例如,如果我想将字符串转换为?该功能应该允许您指定格式。 http://play.golang.org/p/v5DbowXt1x 这导致了恐慌。 从逻辑上讲这是有道理的,因为它应该如何知道哪一天和哪一个月。 其他语言具有类似于以下功能: 我在Go文档中找不到这样的功能,我唯一选择正则表达式吗? 问题答案: time.Parse正在寻找一些关键值

  • 我有以下两个日期: 2009年10月8日 我正在使用Jackson将日期从rest api转换为joda Datetime。 我以为模式“dd MMM.yyyy”可以工作,但“may”没有点,所以在那一点上崩溃了。 有没有解决方案,或者我必须自己编写datetime解析器? jackson中的注释是: 所以只允许有一种约会模式。

  • 这个问题类似于我之前的问题拆分一个包含破折号和减号的字符串。但我问错了,然后它得到了稍微不同的语义,人们从这个角度回答(包括)。因此,与其修改这个问题,我认为最好是提出一个新问题。 我必须拆分一个包含连字符-减号和减号的字符串。我尝试根据Unicode字符(https://en.wikipedia.org/wiki/Hyphen#Unicode)进行拆分,但考虑到减号与连字符-减号相同。有什么方法