【问题标题】:What's the RegExp for date and month?日期和月份的正则表达式是什么?
【发布时间】:2020-08-14 15:27:00
【问题描述】:

文件名输入示例:

收益文件 7 月 31 日 20.csv

产量文件 20 年 8 月 30 日.csv

我的RegExp 代码:

Yield\sfile\s[0-9]{2}\s\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May?|Jun(?:e)?|July?|Aug(?:ust)?|Sept(?:ember)?|Oct(?:ober)?|Nov(?:ember)|Dec(?:ember)?)\s[09]{2}.*\\.([Cc]{1}[Ss]{1}[Vv]{1})$

【问题讨论】:

  • 最后的字符类应该是[0-9]{2},加上一个破折号,你可以省略它后面的.*,你也可以在模式和单词边界中省略{1}^Yield\sfile\s[0-9]{2}\s(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May?|Jun(?:e)?|July?|Aug(?:ust)?|Sept(?:ember)?|Oct(?:ober)?|Nov(?:ember)|Dec(?:ember)?)\s[0-9]{2}\.(?:[Cc][Ss][Vv])$regex101.com/r/A7cU55/1
  • 我们不需要在月份之前\b
  • 你之前匹配了一个空白字符\s
  • 您应该多花一点时间清楚地提出您的问题。正文应该独立存在,不需要理解标题。您还应该提供通过和失败测试的输入和预期输出示例,以及您的代码出了什么问题(最好在问题中发布为可运行的 sn-p)。

标签: javascript regex file date


【解决方案1】:

如果你的文件格式是那种死板的......

  • 文字字符串Yield file (带有尾随空格)
  • 要提取的日期
  • 文字字符串.csv

那么你就不需要正则表达式了。你甚至不需要关心字符串。

当然你可以验证它,例如。

if( !filename.startsWith("Yield file ") || !filename.endsWith(".csv")) {
    throw new Error("Filename doesn't match the expected pattern");
}

但实际上你只需要:

date = filename.substring(
    "Yield file ".length,
    filename.length - ".csv".length
);

【讨论】:

  • OP 似乎也想匹配月份名称,所以/^Yield file \d\d (Jan|January|Feb|February|...) \d\d.csv$/。 OP 措辞不佳。
  • 您好,措辞很抱歉!周五抢!我只是想知道月份名称的正则表达式。所以格式类似于 20 年 6 月 31 日。我知道我们可以声明 [0-9]{2} 的数字,但对于文本月份名称我不确定!
  • 我的观点是——如果你知道这个月将是“不管里面有什么”,你就不需要匹配具体的文本。
猜你喜欢
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多