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

来源:互联网 发布:android游戏3d程序员 编辑:程序博客网 时间:2024/05/19 13:13

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

/// <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

0 0
原创粉丝点击