主页 > 博客 > 文章详情

C#正则表达式匹配域名

2021-05-29 读取中... 博客

相信大家会经常使用到C#的 正则表达式 ,那么 正则表达式 如何匹配域名呢?今天小编就帮助大家了解一下 正则表达式 如何去识别出字符串中包含的域名。

1.识别字符串中是否有域名

Regex.IsMatch(str, @"v[a-z0-9\-]{3,}[a-z0-9\-\.]*\.[a-z0-9]{2,5}$", RegexOptions.IgnoreCase);
从上面代码中可以返回一个bool值,它代表了字符串中是否有可以匹配 正则表达式 中的规则, 这条规则的含义是:以数字字母和“-”组成的字符串必须有3个及以上,后面接任意个数的数字字母和“-”、“.”组成的组合,最后必须要有2-5个字母和数字做结尾的字符串,一般符合此规则的基本都是域名。

2.提取字符串中的域名

var domainMatches = Regex.Matches(str, @"([a-z0-9\-]{3,}[a-z0-9\-\.]*\.[a-z0-9]{2,5})");
var domains = new List<string>();
if (domainMatches != null)
{
    foreach (Match domainMatch in domainMatches)
    {
        var domainMatchThis = domainMatch.Groups[0].Value;
        if (!domains.Contains(domainMatchThis)) domains.Add(domainMatchThis);
    }
}
使用Regex.Matches()函数配合正确的 正则表达式 便可轻易的将字符串中满足域名格式的域名筛选出来,然后将域名排重并存放于字符串列表集合中。

大家学会在C#中利用 正则表达式 提取与判断域名了吗?如果有问题,欢迎留言询问小编哦!