从reddit注释中删除链接

时间:2018-05-18 13:00:40

标签: javascript jquery

我正在阅读reddit帖子下的评论。

有些评论有链接,我想摆脱。

示例(输入):

This is a [pic](https://i.imgur.com/yKmUMJD.jpg), [this](http://www.google.com) is a link

我希望字符串看起来(输出):

  

这是一张图片,这是一个链接

我使用this,以下行就是诀窍:

item.data.body.replace(/ *\([^)]*\) */g, "").replace('[', '').replace(']', '');

我想知道如何将http添加到正则表达式中,因此它不会删除" normal"括号文本。

谢谢

1 个答案:

答案 0 :(得分:3)

我看到你早些时候发过了类似的问题。现在你也发布了你尝试过的东西......看起来你正在努力解决这个问题。

这就是我要做的事情:

const str = "This is a [pic](https://i.imgur.com/yKmUMJD.jpg), [this](http://www.google.com) is a link";

const tags = str.match(/\[.*?(?=\]\((.*?)\))/g).map(x => x.substring(1));
const newString = str.replace(/\[.*?\]\(.*?\)/g, () => {
  return tags.shift();
});

console.log(newString)

第一步是找到所有标记的文本。换句话说,所有内容都包含在[]中。在上面的示例中,这将生成数组[pic, this]

然后,我们需要用上面的每个匹配替换整个url bbcode(即[xxx](http://url))。我们将数组视为一个队列,并在使用shift()后使用()[]删除数组中的每个结果。

当然,这个解决方案并非万无一失。它不会处理任何字符select DISTINCT t.Ticket ,t.customerNO ,tt.Name ,t.Order ,tt.date from table 1 t inner join table 2 on t.id=tt.id 的标记或URL本身的角落。