我正在寻找一段文本并标记任何链接,例如任何消息传递或电子邮件应用程序将如何进行链接。我已经推出了自己的正则表达式解决方案,但遇到了一些极端情况。这似乎是一种常见的情况,似乎必须有一个可以处理所有这些问题的开源库,但是我在进行任何Google或StackOverflow或Github搜索方面都没有成功。有没有人对此熟悉任何库?举几个例子:
Hello, www.link.com, is a link and http://hello.com?new=123,145#141 is also a link.
Hello, www.link.com, is a link and http://hello.com?new=123,145#141 is also a link.
请注意,StackOverflow本身缺少链接(尽管该链接非常明显,出于某种原因,我认为这是故意的),更好的标记是Gmail:
是否有经过战斗验证的开源库可以满足我的需求?换句话说,我正在做这样的事情:
var text = "Hello, www.link.com, is a link and http://hello.com?new=123,145#141 is also a link."
markupText(text)
"Hello, <a href="www.link.com">www.link.com</a>, is a link and <a href="http://hello.com?new=123,145#141">http://hello.com?new=123,145#141</a> is also a link."
答案 0 :(得分:0)
该任务很可能无法完成,因为您可能希望执行该任务,但是我们可以尝试一个可能部分解决该问题的解决方案,但是随着我们输入内容的改变,它可能会失败。一个示例表达式为:
(.+?)((www|http).+?),?[\s]
const regex = /(.+?)((www|http).+?),?[\s]/gm;
const str = `Hello, www.link.com, is a link and http://hello.com?new=123,145#141 is also a link.`;
const subst = `$1<a href="$2">$2</a> `;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);