我想在评论中找到所有@提及的事件,然后将其替换为其他格式。
我有这个正则表达式来对所有出现进行分组,但是所有这点我都必须为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]
答案 0 :(得分:2)
您可以使用正则表达式来匹配@
之后的部分和之前的空格,并使用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)
答案 1 :(得分:0)
您可以捕获零次或多次空白,或断言第1组中字符串的开头,匹配@,然后在非空白\S+
组中捕获
然后在替换使用组1和2 $1[~$2]
const strings = [
"guiyjhk @test hgjhgjh test@this_is.test2 jhgjhgjh @this_is.test2",
"@test"
];
strings.forEach((s) => {
console.log(s.replace(/@(\S+)/g, "[~$1]"));
});