需要正则表达式用于路径和文件扩展名匹配

时间:2011-04-05 00:45:26

标签: c# regex

我需要C#的正则表达式来返回允许的路径和文件名的匹配。

以下内容应符合:

  • a(至少一个字符)
  • xxx/bbb.aspx(允许路径,只允许.aspx扩展名)
  • bbb.aspx?aaa=1(允许使用查询字符串)

它不应匹配:

  • aaa.
  • aaa.gif(仅允许.aspx扩展名)
  • aaa.anythingelse

2 个答案:

答案 0 :(得分:1)

试试这个:

[\w/]+(\.aspx(\?.+)?)?

答案 1 :(得分:0)

.NET具有用于处理文件路径的内置功能,包括查找文件扩展名。所以我强烈建议使用它们而不是正则表达式。以下是使用System.IO.Path.GetExtension()的可能解决方案。这是未经测试但它应该有效。

private static bool IsValid(string strFilePath)
{
    //to deal with query strings such as bbb.aspx?aaa=1
    if(strFilePath.Contains('?'))
        strFilePath = strFilePath.Substring(0, strFilePath.IndexOf('?'));

    //the list of valid extensions
    string[] astrValidExtensions = { ".aspx", ".asp" };

    //returns true if the extension of the file path is found in the 
    //list of valid extensions
    return astrValidExtensions.Contains(
        System.IO.Path.GetExtension(strFilePath));
}