Regex 我的正则表达式不起作用了

Regex 我的正则表达式不起作用了,regex,Regex,我有一个excel文件,必须有这种名称格式,其中xxx是一个数字,Curr是欧元或英镑,yymmdd是一个日期 CDFSDDRCxxxCurryymmdd.xls(x) 这是我用的正则表达式。它不适用于120920或121005这样的日期。 有什么想法吗 Match nameIsValid = Regex.Match(activeWorkbook.Name, @"CDFSDDRC(?<xxx>\d+)(?&

我有一个excel文件,必须有这种名称格式,其中xxx是一个数字,Curr是欧元或英镑,yymmdd是一个日期

CDFSDDRCxxxCurryymmdd.xls(x)
这是我用的正则表达式。它不适用于120920或121005这样的日期。 有什么想法吗

Match nameIsValid = Regex.Match(activeWorkbook.Name,
                                      @"CDFSDDRC(?<xxx>\d+)(?<curr>EUR|GBP)(?<yymmdd>\d{2}(?:0[1-9]|1[12])(?:(?:0|1|2)[1-9]|3[0-2]))\.xls?");
Match nameIsValid=Regex.Match(activeWorkbook.Name,
@“CDFSDDRC(?\d+)(?\d{2}(?:0[1-9]| 1[12])(?:(?:0 | 1 | 2[1-9]| 3[0-2])\.xls?”;

这比您所拥有的要简单一些

"CDFSDDRC(\d+)(EUR|GBP)(\d{2})(\d{2})(\d{2}).xls"

此正则表达式的快速修复方法如下:

CDFSDDRC(?<xxx>\d+)(?<curr>EUR|GBP)(?<yymmdd>\d{2}(?:0[1-9]|1[012])(?:(?:0|1|2)[0-9]|3[0-2]))\.xls?
匹配后,可以通过编程方式检查它是否为有效日期

CDFSDDRC(?<xxx>\d+)(?<curr>EUR|GBP)(?<yymmdd>\d{6})\.xls?