javascript - 如何将字符串中的 url 替换为 anchor 标记

标签 javascript jquery html regex

//js

 var content ="welcome  http://www.yahoo.com?career hi http://www.yahoo.com http://www.yahoo.com  http://10.179.105.223:81/Person.aspx?accountname=MHC%5CAdministrator ";

//******************************************************************************//
//data coming from server

 var distinctURLs = ["http://www.yahoo.com?career" , "http://www.yahoo.com" , "http://www.yahoo.com" , "http://10.179.105.223:81/Person.aspx?accountname=MHC%5CAdministrator" ];

//******************************************************************************//

//replacing with anchor tag
 for (var j = 0; j < distinctURLs.length; j++) {
     content = content.replace(new RegExp( distinctURLs[j], 'g' ), "<a href='" +    distinctURLs[j] + "'>" + distinctURLs[j] + "</a>");
 }

所以在上述情况下,我首先找到来自 var content 的网址并替换为 <a>标签,但它无法正常工作。

//output  should be

welcome <a href="http://www.yahoo.com?career">http://www.yahoo.com?career</a> hi  <a href="http://www.yahoo.com">http://www.yahoo.com</a > <a href="http://www.yahoo.com">http://www.yahoo.com</a> <a href="http://10.179.105.223:81/Person.aspx?accountname=MHC%5CAdministrator">http://10.179.105.223:81/Person.aspx?accountname=MHC%5CAdministrator</a>

使用replacenew RegExp它没有得到预期的结果

这里你可以引用Code

提前致谢!

最佳答案

您可以使用 replace() 做这样简单的事情 使用正则表达式

var content ="welcome  http://www.yahoo.com?career hi http://www.yahoo.com http://www.yahoo.com  http://10.179.105.223:81/Person.aspx?accountname=MHC%5CAdministrator ";

document.write(content.replace(/http:\/\/[^\s]+/g,'<a href="$&">$&</a>'))

<强> Regex explanation

更新:

或者用你的代码你可以做到

var content = "welcome  http://www.yahoo.com?career hi http://www.yahoo.com http://www.yahoo.com  http://10.179.105.223:81/Person.aspx?accountname=MHC%5CAdministrator ";
var distinctURLs = ["http://www.yahoo.com?career", "http://www.yahoo.com", "http://www.yahoo.com", "http://10.179.105.223:81/Person.aspx?accountname=MHC%5CAdministrator"];
document.write(content.split(/\s+/).map(function(v) {
  return distinctURLs.indexOf(v) == -1 ? v : '<a href="' + v + '">' + v + '</a>';
}).join(' '));
  1. 使用 split() 拆分内容
  2. 迭代使用map()
  3. 使用 indexOf() 检查值是否在数组 distinctURLs并返回所需值
  4. 使用 join() 按空格​​连接数组值

关于javascript - 如何将字符串中的 url 替换为 anchor 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32471548/

相关文章:

javascript - 是否有与 Ruby 的 andand 等效的 Javascript?

javascript - 通过 $.ajax 将数组/集合发送到 PHP。 PHP 添加数字

javascript - 在 View 上调用 Jquery 函数

javascript - 寻找一种方法来简化带有多个 || 的 if 语句

javascript - 创建一个元框,在 WordPress 中显示图库中的图像

javascript - 使用 Javascript 比较时间

javascript - 为同一 HTML 页面上的不同按钮调用相同的 onClick 函数

javascript - 如何通过 ajax 通过 $POST 发送对象数据(从 jQuery 到 vanilla JS)

javascript - jQuery element.dispatchEvent() 不是函数?

javascript - jquery脚本从iframe中提取src