IsMatch()在.NET中为正则表达式返回false

时间:2017-05-29 13:07:55

标签: c# regex

我使用.Net正则表达式测试程序,但在我的C#应用​​程序中,IsMatch()返回false。

这是我的代码:

Regex reg = new Regex(@"^[0 - 9]{ 3}_RE_[0 - 9]{ 4}[0-9]{2}[0-9]{2}_[0 - 9]{2}[0-9]{2}[0-9]{2}.TXT$");

string fileName = "102_RE_20120102_091013.TXT"

if (reg.IsMatch(fileName))
{
    // Control flow never reaches this block
}

代码有什么问题?

3 个答案:

答案 0 :(得分:4)

因为里面有不必要的空格字符。尝试

^[0-9]{3}_RE_[0-9]{4}[0-9]{2}[0-9]{2}_[0-9]{2}[0-9]{2}[0-9]{2}.TXT$

示例:https://dotnetfiddle.net/3ggSJV

答案 1 :(得分:1)

正确,你也可以写:

"^\d{3}_RE_\d{8}_\d{6}.TXT$"

\d代表[0-9](数字)

如果您还想获得可以使用的所有日期和时间部分 "^(\d{3})_RE_(\d{4})(\d{2})(\d{2})_(\d{2})(\d{2})(\d{2}).TXT$"

答案 2 :(得分:0)

[0 - 9]:匹配集合中存在的单个字符

[0-9]:匹配0到9范围内的单个字符(区分大小写)

所以使用

^[0-9]{3}_RE_[0-9]{4}[0-9]{2}[0-9]{2}_[0-9]{2}[0-9]{2}[0-9]{2}.TXT$

您可以使用此在线https://regex101.com/正则表达式测试程序