zoukankan      html  css  js  c++  java
  • 正则匹配文本中的链接

      最近做的一个项目中遇到使用正则匹配一段文本中的 url 并将其显示为短连接的需求。

      显示的文本包括为防止 xss 而用 js 处理过的带有特殊符号的文本以及 php 直接渲染后的文本,所以需要两个正则表达式。

    // 匹配不带特殊符号的文本的正则
    var reg0 = /((((https?|ftp?):(?://)?)(?:[-;:&=+$]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=+$]+@)[A-Za-z0-9.-]+)((?:/[+~%/.w-_]*)???(?:[-?+=&;:%!/@.w_]*)#?(?:[-+=&;%!?/@.w_]*))?)/ig;
    // 匹配带有特殊符号的文本的正则
    var reg1 = /((((https?|ftp?|http?):(?:(/)(/))?)(?:[-;:(&)=+$]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:=+$]+@)[A-Za-z0-9.-]+)((?:(/)[+~%(/).w-_]*)???(?:[-?+=(&);:%!(/)@.w_]*)#?(?:[-?+=(&);%!(/)@.w_]*))?)/ig;
    function replaceSrc(txt, type){
      // 将长连接处理为短链接
        var urlReg = /[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.?/;
      
      // type 为 0 表示文本中不带有特殊符号
    
        if( type == '0' ){
            reg = reg0;
      // type 为 1 表示文本经js处理过,带有特殊符号
        }else if( type == '1' ){
            reg = reg1;
        }
        var result = txt.replace(reg,function(item){
            return "<a class='short_link' href='"+ item +"' target='_blank'>"+urlReg.exec(item)[0]+"</a>";
        });
        return result;
    }
  • 相关阅读:
    计算机入门知识
    iOS学习之-开机引导图
    学习笔记之09-空指针和野指针
    学习笔记之08-self关键字
    学习笔记之07-自定义构造方法和description方法
    学习笔记之06-点语法
    学习笔记之05-第一个OC的类
    学习笔记之04-第一个OC程序解析
    学习笔记之03-第一个OC程序
    hdoj1016 [dfs]
  • 原文地址:https://www.cnblogs.com/yaoyuqian/p/8241711.html
Copyright © 2011-2022 走看看