首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >替换字符串中的多个urls (AngularJS)

替换字符串中的多个urls (AngularJS)
EN

Stack Overflow用户
提问于 2018-05-27 20:53:09
回答 2查看 45关注 0票数 -1

应将该字符串:"https://stackoverflow.com/1 test https://stackoverflow.com/2“转换为:"<a href="https://stackoverflow.com/1> stackoverflow.com/1 </a> test <a href="https://stackoverflow.com/2"> stackoverflow.com/2 </a>

所以需要改变的是:

为了获得更好的url,

  1. 在链接周围放置了<a href>..</a>,这样你就可以点击它了。
  2. 中的“https://”“或"http://”“应该去掉,以获得更好的url。

到目前为止,我所拥有的:

代码语言:javascript
复制
AngularJS

$scope.convertedBio = function(value) {
  var text = value.replace(/(http[^\s]+)/, '<a href="$1">$1</a>');
   return text;
}

但是,这将返回"<a href="https://stackoverflow.com/1">https://stackoverflow.com/1</a> test https://stackoverflow.com/2

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-27 21:33:31

代码语言:javascript
复制
function replaceUrls(value) {
  var text = value.replace(/(https?:\/\/)(www\.)?([\S]*)/g, '<a href="$1$2$3">$3</a>');
  return text;
}

var x = replaceUrls('http://stackoverflow.com/1 test https://www.stackoverflow.com/2')

console.log(x)

// output <a href="https://stackoverflow.com/1">stackoverflow.com/1</a> test <a href="https://www.stackoverflow.com/2">stackoverflow.com/2</a>
票数 0
EN

Stack Overflow用户

发布于 2018-05-27 21:01:07

您需要:

  1. 将除协议部分和可选www.外的整个URL捕获到附加组中
  2. 将该组的值用作<a>的文本
  3. 添加全局修饰符

<代码>G29

代码语言:javascript
复制
var text = value.replace(/(https?:\/\/(?:www\.)?([^\s]+))/g, '<a href="$1">$2</a>');
                                                ^      ^  ^                 ^
                                                1      1  3                 2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50552348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档