【问题标题】:Javascript - how can I make links from text excluding any already made link?Javascript - 如何从文本中创建链接,不包括任何已创建的链接?
【发布时间】:2020-10-16 17:03:42
【问题描述】:

如何从文本中找到的网址创建链接,但不包括任何已找到的链接? 你能帮助正确的正则表达式吗?

  function makeurl(text) {
  var urlRegex = /(https?:\/\/[^\s]+)/g;
  return text.replace(urlRegex, function(url) {
    return '<a href="' + url + '">' + url + '</a>';
  })
}

var check = 'Hello <a href="https://www.xyyyyy.co">cick here</a> to visit our website http://google.x';

console.log (makeurl(check) )

https://jsfiddle.net/9L30zotx/

我只想更改 http://google.x,但保留已为 www.xyyyyy.co 制作的 html

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    也许您可以在正则表达式 (/([\s]|^)(https?:\/\/[^\s]+)/g) 的开头使用 ([\s]|^) 来检查链接之前是否有空格(或者如果链接位于文本的开头,则为开头)。

    【讨论】:

    • Answer 足以让 OP 尝试不同的建议并据此进行调试
    • 谢谢!真的很有效
    【解决方案2】:

    如果锚文本本身不是一个url,那么你可以很容易地解析出HTML内容,然后你就只有纯文本了。

    试试下面的代码,

    function makeurl(text) {
      var urlRegex = /(https?:\/\/[^\s]+)/g;
      document.body.innerHTML = text; // taking document.body as example
      text = document.body.innerText;
      
      return text.replace(urlRegex, function(url) {
        return '<a href="' + url + '">' + url + '</a>';
      });
    }
    
    var check = 'Hello <a href="https://www.xyyyyy.co">click here</a> to visit our website http://google.x';
    
    console.log(makeurl(check))

    【讨论】:

      猜你喜欢
      • 2015-06-09
      • 2018-10-20
      • 1970-01-01
      • 2011-09-29
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多