【问题标题】:Regex for date format dd Mmm yyyy from email header日期格式的正则表达式 dd Mmm yyyy 来自电子邮件标题
【发布时间】:2019-12-12 15:52:30
【问题描述】:

我正在处理以下正则表达式:

^(\d\d)\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{4})?$

我正在尝试从格式如下的电子邮件标题中获取日期:

"Mon, 18 Nov 2019 09:19:17 -0700 (MST)"

我希望结果是:

18 Nov 2019

似乎\s 用于空格可能是罪魁祸首,但我还没有找到另一个论坛结果,它使用空格而不是"-""/" 来获取日期。

有没有人有任何建议可以按照上述方式进行提取?提前致谢。

【问题讨论】:

  • 到底是什么问题?您已经描述了您的预期输出 - 您得到的实际输出是什么?
  • 这可能是题外话,但如果你不一定要使用正则表达式来解析它。如果您不必使用正则表达式,您可以简单地用空格 split() 字符串,然后提取您想要的值,只要输入格式始终相同。
  • @KevinHernandez 这就是问题所在,标题因原始客户端而异
  • @NickReed 我根本没有得到输出 - 没有匹配项。应该提到的。谢谢

标签: regex


【解决方案1】:

问题是您在正则表达式的开头和结尾添加了“^”和“$”符号。

"^n":^n 量词匹配任何以 n 开头的字符串。 “n$”:n$ 量词匹配任何以 n 结尾的字符串。

由于文本不是以 2 位 (\d\d) 开头并以 2 位 (\d{4}) 结尾。您不会从此正则表达式中得到任何结果。

您可以简单地删除这两个符号或使用以下代码来实现。

/(\d{2}\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{4})/.exec("Mon, 18 Nov 2019 09:19:17 -0700 (MST)")[1]

【讨论】:

  • 哎呀!我正在做的另一个测试的剩菜 - 谢谢你。现在工作并松了一口气,这是一个简单的修复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-14
相关资源
最近更新 更多