zoukankan      html  css  js  c++  java
  • Url转Link的C#正则表达式

    网上关于Url转链接(href)的正则表达式一搜一大堆,但真正好用的没几个。

    后来在Matthew O'Riordan的Blog上发现一个很好用的正则表达式,是用Javascript写的,代码如下:

    (
      ( // brackets covering match for protocol (optional) and domain
        ([A-Za-z]{3,9}:(?://)?) // match protocol, allow in format http:// or mailto:
        (?:[-;:&=+$,w]+@)? // allow something@ for email addresses
        [A-Za-z0-9.-]+ // anything looking at all like a domain, non-unicode domains
        | // or instead of above
        (?:www.|[-;:&=+$,w]+@) // starting with something@ or www.
        [A-Za-z0-9.-]+   // anything looking at all like a domain
      )
      ( // brackets covering match for path, query string and anchor
        (?:/[+~%/.w-]*) // allow optional /path
        ???(?:[-+=&;%@.w]*) // allow optional query string starting with ? 
        #?(?:[.!/\w]*) // allow optional anchor #anchor
      )? // make URL suffix optional
    )
    

    针对我们的使用场景(只对http或https开头的Url进行转换)简化了一下,并用C#写出:

    public static class ContentFormatter
    {
        private static readonly Regex Url_To_Link = new Regex(@"(?<url>
            (https?:(?://)?)        # match protocol, allow in format http:// or https://
            [A-Za-z0-9.-]+          # anything looking at all like a domain, non-unicode domains        
            (                         # brackets covering match for path, query string and anchor
            (?:/[+~%/.w-]*)?    # allow optional /path
            ??(?:[-+=&;%@.w]*?)  # allow optional query string starting with ? 
            #?(?:[.!/\w-]*)      # allow optional anchor #anchor
            )?                        # make URL suffix optional
            )",
            RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace,
            TimeSpan.FromMilliseconds(100));
    
        public static string UrlToLink(string text)
        {
            if (string.IsNullOrEmpty(text)) return string.Empty;
    
            return Url_To_Link.Replace(text, "<a href="${url}" target="_blank">${url}</a>");
        }
    }
    
  • 相关阅读:
    Hibernate映射
    hibernate 大对象类型的hibernate映射
    Hibernate映射文件详解(News***.hbm.xml)二
    Hibernate映射文件详解(News***.hbm.xml)一
    hibernate的速度问题--hibernate.jdbc.fetch_size和 hibernate.jdbc.batch_size
    EF使用EntityTypeConfiguration配置映射关系
    数据对象的映射关系
    SQL SERVER索引
    WCF(三)相关技术的学习
    WCF(二) endpoint
  • 原文地址:https://www.cnblogs.com/dudu/p/regex-url-to-link.html
Copyright © 2011-2022 走看看