C#域名操作,正则匹配域名

一、判断一个字符串是否是域名

/// <summary>
/// 验证字符串是否是域名
/// </summary>
/// <param name="str">指定字符串</param>
/// <returns></returns>
public static bool IsDomain(string str)
{
    string pattern = @"^[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$";
    return IsMatch(pattern, str);
}
/// <summary>
/// 判断一个字符串,是否匹配指定的表达式(区分大小写的情况下)
/// </summary>
/// <param name="expression">正则表达式</param>
/// <param name="str">要匹配的字符串</param>
/// <returns></returns>
public static bool IsMatch(string expression, string str)
{
    Regex reg = new Regex(expression);
    if (string.IsNullOrEmpty(str))
        return false;
    return reg.IsMatch(str);
}
实例验证:

/// <summary>
/// 说明,目前不支持中文域名
/// </summary>
public static void TestOne()
{
    Console.WriteLine(RegexHelper.IsDomain("baidu.com"));//true
    Console.WriteLine(RegexHelper.IsDomain("m.baidu.com"));//true
    Console.WriteLine(RegexHelper.IsDomain("m.bj.baidu.com"));//true
    Console.WriteLine(RegexHelper.IsDomain("baidu.com."));//false
    Console.WriteLine(RegexHelper.IsDomain("m.baidu.com.cn"));//true
    Console.WriteLine(RegexHelper.IsDomain("m.百度.com"));//false
}

二、匹配字符串中的域名:

/// <summary>
/// 匹配获取字符串中所有的域名
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static List<string> MatchsDomain(string input)
{
    string pattern = @"[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+";
    return Matchs(input, pattern);
}
/// <summary>
/// 匹配结果  返回匹配结果的数组
/// </summary>
/// <param name="input"></param>
/// <param name="expression"></param>
/// <returns></returns>
public static List<string> Matchs(string input, string expression)
{
    List<string> list = new List<string>();
    MatchCollection collection = Regex.Matches(input, expression, RegexOptions.IgnoreCase | RegexOptions.Multiline);
    foreach (Match item in collection)
    {
        if (item.Success)
        {
            list.Add(item.Value);
        }
    }
    return list;
}
验证实例:

public static void TestTwo()
{
    string source = "123.com zhidao.123.com www.123.com/q?ct=17&pn=0&tn zhidao.123.com/q?ct=17&pn=0&tn 123.com/q?ct=17&pn=0&tn 要求匹配出123.com 或者有可能是这样的有不是顶级域名的 www.123.com.cn zhidao.123.com.cn www.123.co...";
    List<string> list = RegexHelper.MatchsDomain(source);
    foreach (var item in list)
    {
        Console.WriteLine(item);
    }
}


更多参考:http://blog.163.com/m13864039250_1/blog/static/21386524820161049745479/

C# 常见Url操作实例(一)、正则表达式匹配URl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值