zoukankan      html  css  js  c++  java
  • 关于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

    这次对了

  • 相关阅读:
    nopcommerce商城系统--源代码结构和架构
    Unity3d Material(材质) 无缝拼接
    unity3d中的http通信 二
    unity3d中的http通信
    Unity3d webplayer获取url参数
    Unity3d 读取网络xml
    unity3d web.config设置
    Unity3d Web3d资源的动态加载
    Unity3d webplayer发布的问题和100%自适应浏览器
    Unity3d 与IOS 相互调用
  • 原文地址:https://www.cnblogs.com/makalochen/p/14467834.html
Copyright © 2011-2022 走看看