wangming1993 / issues

记录学习中的一些问题,体会与心得 https://wangming1993.github.io/issues
8 stars 4 forks source link

识别并替换一段文件中的url地址 #5

Open wangming1993 opened 9 years ago

wangming1993 commented 9 years ago

识别并替换一段文件中的url地址

需求

需要在textarea中将一段文字中的url形式的地址以超链接的形式展现,  类似于微信, QQ 中的自动链接识别

解决方案

      chat.wrapLink = (body) ->
        replacedBody = body
        url = /(ftp|http|https):\/\/([\w-]+\.)+(\w+)(:[0-9]+)?(\/(\w)*)*(\/|([\w#!:.?+=&%@!\-\/]+)?|\/([\w#!:.? +=&%@!\-\/]+))?/
        result = body.match url
        @log 'result', result
        if result
          match = result[0]
          replacedBody = '<a target="_BLANK" href="' + match + '">' + match + '</a>'
          replacedBody = body.replace url, replacedBody
        replacedBody

主要是 url 的正则定义:

  1. (ftp|http|https) 表示这三种协议中的一种
  2. :\/\/ 表示的是 ://
  3. ([\w-]+.)++(\w+) 表示的是host
  4. (:[0-9]+)? 表示端口
  5. (\/(\w)) 表示请求的路径
  6. (\/|([\w#!:.?+=&%@!-\/]+)?|\/([\w#!:.? +=&%@!-\/]+))? 表示的是请求参数,段地址(#)
EggsBlue commented 6 years ago

你好,请问这个怎么用js实现?我看不太懂你写的这个,请问你写的是啥代码..

wangming1993 commented 6 years ago

@TopCoderMyDream coffeescript 这里主要描述的是如何识别 url 并替换

EggsBlue commented 6 years ago

谢谢,我使用别的方法实现了,具体参考:http://www.zhangxinxu.com/wordpress/2010/04/javascript%E5%AE%9E%E7%8E%B0http%E5%9C%B0%E5%9D%80%E8%87%AA%E5%8A%A8%E6%A3%80%E6%B5%8B%E5%B9%B6%E6%B7%BB%E5%8A%A0url%E9%93%BE%E6%8E%A5/