c#正则表达式匹配子域和其他包含通配符的URL

时间:2017-07-11 09:58:58

标签: c# regex

我试图根据一组预定义的网址和我从另一个桌子获得的实际网址进行一些通用类型的网址匹配。

网址包含我需要使用的通用网址,以便检查传入的网址是否匹配。

所以网址可能看起来像这样:

Y

然后传入的网址可能如下所示(如果它们匹配,则会给出是/否)

dataset是的

https://bob.sharepoint.com没有

https://ilovesharepoint.com没有

https://trello.com是的

https://trello.com/b/3782932是的

你明白了。除了对每个案例进行编码之外,我还在努力寻找一种解析这些传入网址的通用方法,看看它们是否与其中任何一个匹配。

目前我为每个人编码,但这是一场噩梦。

1 个答案:

答案 0 :(得分:1)

这可能会给你一个很好的起点:

string[] patterns = new[] 
{ 
    "https://*.sharepoint.com", 
    "https://trello.com/b/*", 
    "https://*.google.*" 
};

public bool IsMatch(string input)
{
    foreach (var p in patterns)
    {
        if (Regex.Match(input, Regex.Escape(p).Replace("\\*", "[a-zA-Z0-9]+")).Success)
            return true;
    }

    return false;
}

请注意,掩码[a-zA-Z0-9]+非常简单,您可能希望使用更好的掩码,具体取决于您需要实现的目标。