如何在符号@ 后自动超链接文本?
How do you automatically hyperlink text after the symbol @?
在我的网站上,有些文本可能包含对帐户的提及,例如@Melon 或@Banana。我怎样才能使用 JavaScript 自动 link 这些到他们各自的帐户(例如@Banana -> example.com/users/Banana)?我还想确保如果有人写了类似“@Banana's”的内容,它只会 link “@Banana”。如果这令人困惑,请发表评论。
谢谢!
你可以用正则表达式表达出来:
text.replace(/(^|\s)@([^\s]+)(\s|$)/g, "<a href=\"example.com/users/\">@</a>")
对于@Banana's 的情况,您需要定义哪些字符是 link 的一部分,哪些字符终止@statement。
此正则表达式假定 link 以 @ 开头并以空格结尾。
给你,使用正则表达式,但它基本上取决于用户的用户名的样子
const regex = /@([\w\d_-]*)(?:[^\.'<\bbr\b/*>\s])*/g;
const testCases = ["@Banana<br/>'s", "@Fruit", "@MOnkeys-12342<br>", "@International_Alien234"];
console.log(testCases.map(str => ({original: str, replace: str.replaceAll(regex, '<a href="example.com/users/">$&</a>')})));
在我的网站上,有些文本可能包含对帐户的提及,例如@Melon 或@Banana。我怎样才能使用 JavaScript 自动 link 这些到他们各自的帐户(例如@Banana -> example.com/users/Banana)?我还想确保如果有人写了类似“@Banana's”的内容,它只会 link “@Banana”。如果这令人困惑,请发表评论。
谢谢!
你可以用正则表达式表达出来:
text.replace(/(^|\s)@([^\s]+)(\s|$)/g, "<a href=\"example.com/users/\">@</a>")
对于@Banana's 的情况,您需要定义哪些字符是 link 的一部分,哪些字符终止@statement。
此正则表达式假定 link 以 @ 开头并以空格结尾。
给你,使用正则表达式,但它基本上取决于用户的用户名的样子
const regex = /@([\w\d_-]*)(?:[^\.'<\bbr\b/*>\s])*/g;
const testCases = ["@Banana<br/>'s", "@Fruit", "@MOnkeys-12342<br>", "@International_Alien234"];
console.log(testCases.map(str => ({original: str, replace: str.replaceAll(regex, '<a href="example.com/users/">$&</a>')})));