【问题标题】:Regex Finding URL's Within a string and replacing any word which ends at ".com"正则表达式在字符串中查找 URL 并替换以“.com”结尾的任何单词
【发布时间】:2016-10-19 21:49:11
【问题描述】:

我正在尝试弄清楚如何查看一个字符串并将任何以“.com”结尾的单词替换为一个有效的 url 链接。

例如: “google.com has launces a ..”将替换为

“<.a href="google.com">google.com 已发布..”

// I tried following code, but it only works for finding word which starts with "www."

data.rows[j].content = data.rows[j].content.replace(
  /(^|&lt;|\s)(www\..+?\..+?)(\s|&gt;|$)/g,'<a href="https://$2" target="_blank">$2</a>'
)

【问题讨论】:

  • 为什么不能将第二个.+? 换成com 并删除www\.?你似乎已经有了你的正则表达式,你有什么卡住了吗?
  • 我是正则表达式的新手。我在上面试过但不起作用

标签: regex url replace hyperlink


【解决方案1】:

首先,我推荐learning how regex works。这是一个非常强大的工具,所有开发人员都应该了解它,因为它出现在许多不同的编程语言中。

一旦你了解了基础知识,这应该更有意义:

/(^|&lt;|\b)(\S+?\.com)(\b|&gt;|$)/g

Regex101 Demo - (有关正则表达式的细分,请查看右上角的窗格)

【讨论】:

  • 它有效,但我只想捕捉以“.com”或“.edu”或“.org”结尾的非空格字符。以上适用于不正确的 google .com
  • @user21 这是有道理的。我已经更新以解决这个问题。顺便说一句,要允许比.com 更多的顶级域,您可以使用(com|edu|org) 之类的替代。
  • 当我使用 data.rows[j].content = data.rows[j].content.replace( /(^|<|\b)(\S+?\.com|edu |org)(\b|>|$)/g,' $2' );它只会将字符串替换为 www.google com
  • 现在可以使用了。谢谢! data.rows[j].content = data.rows[j].content.replace(/(^| $2' );
  • 有没有办法区分前面有 'https:'' 的单词,只用 "
【解决方案2】:

https://regex101.com/r/oF0mA9/2 应该从正则表达式前面解决问题。

【讨论】:

    【解决方案3】:

    com可以按照这种方式结束

    (http(s?):)|([/|.|\w|\s])*\.(?:com)

    (?i)\.(com)$

    (?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*\.(?:com))(?:\?([^#]*))?(?:#(.*))?

    资源链接:

    Regex to check if valid URL that ends in .jpg, .png, or .gif

    【讨论】:

      猜你喜欢
      • 2015-07-29
      • 2015-03-20
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 2012-12-04
      • 1970-01-01
      • 2018-03-16
      • 1970-01-01
      相关资源
      最近更新 更多