正则表达式匹配C#

时间:2016-04-14 08:10:04

标签: c# regex

我有一个常规的表达式来验证类型为Number / string / string的路径:^[0-9]{1,}(/[0-9a-zA-Z_-]+)*$

如果我是对的,它不应该允许空格,这应该是无效的:

2/Pathtest/thirdlevel/bla bla

在像Myregextester这样的在线测试人员中,它按预期工作,但在我的c#代码中,它返回true并带有空格...我做错了什么?

if (!Regex.IsMatch(Path.GetDirectoryName(folder.Path).Replace("\\", "/"), @"^[0-9]{1,}(/[0-9a-zA-Z_-]+)*$"))
{
    throw new ArgumentException(Resources.Strings.FileNameNotAzureCompatible);
}

2 个答案:

答案 0 :(得分:1)

    static void Main(string[] args)
    {
        var pattern = @"^[0-9]{1,}(/[0-9a-zA-Z_-]+)*$";
        string shouldNotMatchString = @"2/Pathtest/thirdlevel/bla bla";
        bool shouldBeFalse = Regex.IsMatch(shouldNotMatchString, pattern);

        string shouldMatchString = @"2/Pathtest/thirdlevel/blabla";
        bool shouldBeTrue = Regex.IsMatch(shouldMatchString, pattern);
    }

猜猜.... shouldBeFale是假的,shouldBeTrue是真的。你的正则表达式似乎很好。

答案 1 :(得分:0)

你的正则表达式似乎错了。
你应该逃避/

^[0-9]{1,}(\/[0-9a-zA-Z_-]+)*$