当前位置: 首页 > 工具软件 > A Markdown > 使用案例 >

使用正则表达式将 markdown 链接转换为 a 链接

杨安歌
2023-12-01

原文链接:https://waynegong.cn/posts/8598.html

背景

在使用 markdown 的超链接语法 [text](link) 时,无法支持 <a></a> 标签的其他属性(例如 targetrel

所以希望将现有用 markdown 链接语法的内容批量替换成 <a></a> 标签

正则解析

通过正则表达式 (?<!!)\[(.*?)\]\((.*?)\) 即可完成匹配,其中 $1 分组为链接文字, $2 分组为链接地址。

整个正则表达式分为三部分:

  1. 第一部分 (?<!!) 向后否定断言,表示不匹配以 ! 开始的内容,避免误伤到 markdown 的图片语法 ![text](img src);
  2. 第一部分 \[(.*?)\] 匹配 markdown 链接语法的前半部分 [text],并将结果保存到 $1 分组;
  3. 第一部分 \((.*?)\) 匹配 markdown 链接语法的前半部分 (link),并将结果保存到 $2 分组;

使用

const str = `balabala![img](https://path.to.img) balabala [text](http://path.to.link) balabala`;
const reg = /(?<!!)\[(.*?)\]\((.*?)\)/ig;
const result = str.replace(reg, `[$1]($2)`);
console.log(result);

相关链接

向后否定断言 | MDN

正则表达式在线验证工具

 类似资料: