Javascript 什么';日期和月份的RegExp是多少?
文件名输入示例: 收益文件7月31日20.csv 收益文件30 Aug 20.csv 我的Javascript 什么';日期和月份的RegExp是多少?,javascript,regex,file,date,Javascript,Regex,File,Date,文件名输入示例: 收益文件7月31日20.csv 收益文件30 Aug 20.csv 我的RegExp代码: Yield\sfile\s[0-9]{2}\s\b(?:一月?:二月?;二月?;三月?;四月?:一日?五月?;六月?;七月?;八月?:乌斯特?;九月?;十月?;十月?;十一月?;十二月?:余烬?\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[Cc]\\\\\\\\\\\\
RegExp
代码:
Yield\sfile\s[0-9]{2}\s\b(?:一月?:二月?;二月?;三月?;四月?:一日?五月?;六月?;七月?;八月?:乌斯特?;九月?;十月?;十月?;十一月?;十二月?:余烬?\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[Cc]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\$
如果您的文件格式如此严格
- 文本字符串
(带尾随空格)产生文件
- 要提取的日期
- 文本字符串
.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
);
结尾的字符类应该是带有破折号的
[0-9]{2}
,您可以省略它后面的*
,也可以从模式和单词边界中省略{1}
<代码>^Yield\sfile\s[0-9]{2}s(?:一月(?:八月)?二月(?:二月)?三月(?:ch)?四月(?:日)?五月?六月(?:日)?八月(?:ust)??九月(?:余烬)?十月(?:ober)?十一月(?:余烬?十二月(?:余烬)?\s[0-9]{2}(?:[Cc][Ss][Vv])$请参阅我们是否不需要\b月前您正在匹配之前的空白字符。您应该花多一点时间清楚地询问您的问题。身体应该独立站立,它不应该要求标题被理解。您还应该提供测试通过和失败的输入和预期输出的示例,以及代码的错误(最好在问题中作为可运行的代码段发布)。OP似乎还希望匹配月份名称,因此/^Yield file\d\d(一月|一月|二月|…)\d\d.csv$/
。这篇文章的措词很糟糕。嗨,很抱歉这样的措词!星期五赶时间!我只是想知道月份名称的正则表达式。所以格式大概是6月31日到20日。我知道对于数字,我们可以声明[0-9]{2},但是对于文本月份名称,我不确定!我的观点是——如果你知道这个月将是“什么都在那里”,你不需要匹配具体的文本。