Javascript 编写正则表达式以用 html 标记替换 http



如何使此字符串文本

first video link: https://www.youtube.com/watch?v=123456
second video link: https://www.youtube.com/watch?v=8123123`;

成为

first video link: 
<a href="https://www.youtube.com/watch?v=123456">
  https://www.youtube.com/watch?v=123456
</a>
second video link: 
<a href="https://www.youtube.com/watch?v=8123123">
  https://www.youtube.com/watch?v=8123123
</a>

我写了一个正则表达式来解析链接

这是我所拥有的。

<script type="text/javascript">
var myString =`first video link: https://www.youtube.com/watch?v=123456
second video link: https://www.youtube.com/watch?v=8123123`; 
var myRegexp = /(https|http)?://[S]+/g;
var match = myRegexp.exec(myString);
console.log(match[0]) // https://www.youtube.com/watch?v=123456
</script>

使用以下解决方案:

var myString = "first video link: https://www.youtube.com/watch?v=123456nsecond video link: https://www.youtube.com/watch?v=8123123"; 
var myRegexp = /https?://S+/g;
var match = myString.replace(myRegexp, '<a href="$&"><br>  $&<br></a>');
document.body.innerHTML = match;

https?://S+将匹配http,然后是可选的s,然后是://,然后S+将匹配一个或多个非空格符号。整个匹配值可以通过$&反向引用插入到String#replace()替换模式内的结果字符串中。

有关如何访问 myRegexp 的所有匹配项的详细信息,请参阅检索正则表达式的所有匹配项。您的示例代码看起来像字符串处理,通过处理源 html 文档的元素或处理字符串并将结果贡献到文档中,您的问题可能会得到正确解决。

document.createElement('a').href=match[0];

提示:您的正则表达式(/(https|http(?://[\S]+/g( 也匹配 "://not.an.url"。只需将"https"的"s"标记为可选,要么在表达式的可选协议部分包含"://"。

最新更新