你可以从别人那里汲取某些思想,但必须用你自己的方式加以|

makalo

园龄:5年11个月粉丝:144关注:15

关于node js 正则匹配markdown 图片的坑

先说下场景,我想用正则匹配markdwon文件中的所有图片链接并返回

测试文件内容

# 测试
![image-20210301112347246](assets/image-20210301112347246.png)
![image-20210301135841577](assets/image-20210301135841577.png)
![image-20210301135841577](assets/image-1111111.png)
![image-20210301135841577](https://img2020.cnblogs.com/blog/1652001/202010/1652001-20201005161645036-1472277248.png)

匹配的正则表达式

/(?<=\!\[.*\]\()(.+)(?=\))/g

分别测试exec,matchAll,match

exec测试

为啥先测试这个,因为最开始我用的就是这个,最后返回结果跟我使用在线工具匹配的结果不一致,

测试代码

let content = fs.readFileSync('../test.md').toString();
let pattern = /(?<=\!\[.*\]\()(.+)(?=\))/g;
console.log('exec', pattern.exec(content));

结果

image-20210302105010299

明显不对

matchAll测试

let content = fs.readFileSync('../test.md').toString();
let pattern = /(?<=\!\[.*\]\()(.+)(?=\))/g;
//console.log('exec', pattern.exec(content));

console.log('matchAll', ...content.matchAll(pattern));

image-20210302105137450

更不对了

match测试

let content = fs.readFileSync('../test.md').toString();
let pattern = /(?<=\!\[.*\]\()(.+)(?=\))/g;
//console.log('exec', pattern.exec(content));
//console.log('matchAll', ...content.matchAll(pattern));
console.log('match', content.match(pattern));

image-20210302105248598

这次对了

本文作者:makalo

本文链接:https://www.cnblogs.com/makalochen/p/14467834.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   makalo  阅读(449)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起