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

    这次对了

  • 相关阅读:
    git archive
    查看库的详细版本号,
    locks
    jquery中的DOM操作集锦
    Eclipse调试Bug的七种常用技巧
    eclipse如何修改dynamic web module version
    Eclipse导入到web项目没有run on server
    深入理解JavaScript系列
    10个好用的JQuery代码片段收集
    实现table样式的设定
  • 原文地址:https://www.cnblogs.com/makalochen/p/14467834.html
Copyright © 2011-2022 走看看