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

    这次对了

  • 相关阅读:
    263邮箱配置告警发件配置
    交换机日期时间设置
    【Switch】- 配置日志文件输出syslog信息
    网络设备断电注意事项
    H3C交换机保存机制
    Docker学习笔记
    小型网络组网模型讲解
    Linux下管理员强行踢出用户的命令使用方法
    Linux SNMP 监控一些常用OID
    MySQL解决方案
  • 原文地址:https://www.cnblogs.com/makalochen/p/14467834.html
Copyright © 2011-2022 走看看