首页 > 解决方案 > Javascript:查找字符串中的所有提及操作并替换它们

问题描述

我想@mention在评论中找到所有出现的地方并用不同的格式替换它们。

我有这个正则表达式,它对所有出现的事件进行分组,但所有这些我都必须为 Jira ( [~string]) 操作这些字符串,并将它们重新插入原始字符串。

comment.match(/[ ]@[^\s]+/g);

有没有更好的办法?

输入的评论:

guiyjhk @test hgjhgjh test@this_is.test2 jhgjhgjh @this_is.test2

这是我想要返回的:

guiyjhk [~test] hgjhgjh test@this_is.test2 jhgjhgjh [~this_is.test2]

标签: javascriptregex

解决方案


您可以使用正则表达式匹配捕获 the 之后的部分@和之前的空格并用于replace()替换这些匹配项。这将允许您匹配@mention被空格包围的同时避免test@this_is.test2

let comment = "guiyjhk @test hgjhgjh test@this_is.test2 jhgjhgjh @this_is.test2"

// catch space then @ then non-space replace with space(s)[non-space]
comment = comment.replace(/([\s+])@([^\s]+)/g, "$1[~$2]");
console.log(comment)


推荐阅读