首页 > 解决方案 > 获取与正则表达式匹配的字符串的值

问题描述

如何替换与打字稿中的正则表达式匹配的字符串

这是我的正则表达式,与给定模式匹配的字符串应该像代码中一样被替换

let formattedString = result.replace(/^<p>(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?/img, '<p><a href=$1 target="_blank" style="cursor:pointer">$1</a>');

我的结果是 -<p>demo.test.io</p>

现在我想把这个替换为 -<p><a href="demo.test.io" target="_blank">demo.test.io</a></p>

谢谢

标签: regextypescript

解决方案


您可以通过匹配协议和可选的 s 和可选的 www 来稍微简化模式。

然后使用模式的第一部分并替换最后的可选部分,匹配除尖括号之外的任何字符。

请注意将双引号放在第 1 组周围。

^<p>((https?:\/\/(?:www\.)?)?[a-z0-9]+(?:[-.][a-z0-9]+)*\.[a-z]{2,5})[^<>]*<\/p>

正则表达式演示

let result = "<p>demo.test.io</p>";
let formattedString = result.replace(/^<p>((https?:\/\/(?:www\.)?)?[a-z0-9]+(?:[-.][a-z0-9]+)*\.[a-z]{2,5})[^<>]*<\/p>/img, '<p><a href="$1" target="_blank" style="cursor:pointer">$1</a>');
console.log(formattedString);


推荐阅读