我是正则表达式的新手,我已经花了几个小时来解决这个问题
let text = "My twitter handle is @emmy, I follow @jo and @pe"
我需要用
<a href="https://twitter.com/emmy">@emmy</a>
替换@emmy,同样,字符串中其他以@开头的其他字符串。这是我通过搜索互联网并阅读docs on MDN想到的
function linkify(text) {
let regex = /(?:^|\W)@(\w+)(?!\w)/g;
return text.replace(regex, function(handle) {
return `<a href="https://twitter.com/${handle.slice(1)}>${handle}</a>`;
})
}
这种解决方案的问题在于有时它会省略一些文本,例如,本周早些时候,@ emmy推荐了最好的学生,并致力于本周初,
任何对解决方案的投入将不胜感激。
最佳答案
我不认为您需要针对此问题的回调,直接替换应该可以工作:
let text = "My twitter handle is @emmy, I follow @jo and @pe";
console.log(text.replace(/(^|\W)@(\w+)\b/g, '$1<a href="https://twitter.com/$2">@$2</a>'));
关于javascript - 使用正则表达式以@开头替换子字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53566267/