检测没有超链接的文本中的URL,并用超链接替换普通URL?

时间:2019-05-02 09:48:02

标签: javascript regex

我花费了大量时间寻找解决方案或尝试解决方案,但是我没有找到解决方案。所以我的用例是:

我有一个文本,可以具有简单的url(带有或不带有http / s),也可以具有超链接的url。

正则表达式应该做什么

它应该保留超链接URL,并将非超链接URL转换为超链接URL。

示例文字

我正在从www.codeburst.com学习正则表达式,并在<a href="https://regexr.com">Regexr</a>尝试正则表达式。

期望的解决方案

我正在从<a href="www.codeburst.com">www.codeburst.com</a>学习正则表达式,并在<a href="https://regexr.com">Regexr</a>尝试正则表达式。

我尝试过

此正则表达式,但无法正常工作。

/((?!href).((https?:\/\/)||(www\.)|(mailto:)).+)/gi

2 个答案:

答案 0 :(得分:1)

  1. 您可能需要在(?<!href=")之后加上否定的外观,该外观最近已添加到ECMAScript中,请参见this answer
  2. 请注意,双||会使此无用(饥饿的比赛)后面的记号出现
  3. 也要注意.+,它匹配之后的所有内容(包括带有/ s regex选项的换行符)

我将从

开始
(?<!href=")(((https?:\/\/)|(www\.)|(mailto:))\S+)

答案 1 :(得分:0)

(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)

正则表达式的突破如下,

  1. (https?:\/\/)?检查http:\\https:\\no http
  2. (www\.)?检查www.no www.

我已经使用以下测试用例检查了上述正则表达式:

  1. href =“ https://www.regexr.com”
  2. href =“ http://www.regexr.com”
  3. href =“ mailto:demo@demo.com”