正则,匹配网址

Posted 晴天彩虹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则,匹配网址相关的知识,希望对你有一定的参考价值。

DNS规定,域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小写字母。标号中除连字符(-)外不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的域名写在最右边。由多个标号组成的完整域名总共不超过255个字符。

由此匹配完整域名的正则表达式:

   ^(?=^.{3,255}$)[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$

例如:baidu.com 

 

 匹配网址:

^(?=^.{3,255}$)(http(s)?:\/\/)?(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+\.\w+)*$

例如: http://www.baidu.com

 

匹配http url:

^(?=^.{3,255}$)(http(s)?:\/\/)?(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+\.\w+)*([\?&]\w+=\w*)*$

例如: http://www.tetet.com/index.html?q=1&m=test

 

            string url = "https://www.baidu.com/s?tn=80035161_2_dg&wd=c%23%E6%AD%A3%E5%88%99";
            string pattern = @"^(http(s)?://)";//协议  [email protected]"http(s)?://"   [email protected]"(s)?"  
            pattern += @"(www.)?";//协议   [email protected]"(www.)?";
            pattern += @"(([a-zA-z0-9][-a-zA-z0-9]{0,62})";//域名  $5
            pattern += @"(\.[a-zA-z0-9][-a-zA-z0-9]{0,62})+)";//域名  $6
            pattern += @"(:\d+)*";//端口号  $7
            Regex reg = new Regex(pattern);
            GroupCollection matches = reg.Match(url).Groups;
            string result = "";
            if (matches.Count >5)
            {
                result = matches[4].Value;
            }    

  

 

以上是关于正则,匹配网址的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式匹配网址

循环通过 python 正则表达式匹配

PHP正则表达式匹配所有网址[重复]

匹配一个网址URL的js正则表达式怎么写啊?

Oracle正则表达式之匹配网址

正则,匹配网址