我有一个常规的表达式来验证类型为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);
}
答案 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_-]+)*$