代码之家  ›  专栏  ›  技术社区  ›  lonix

在基于浏览器的JavaScript中匹配globs

  •  0
  • lonix  · 技术社区  · 2 年前

    在基于浏览器的JavaScript中,是否可以执行glob模式匹配?

    出于说明目的 只有 ,我的意思是这样的地球仪: **/*.{eot,otf,ttf,woff,woff2} ,可以与URL匹配。或者类似于与文件列表匹配的东西,等等。

    重申一下,这是在浏览器中:所以没有Node、npm包、SPA库等。

    1 回复  |  直到 2 年前
        1
  •  1
  •   jantimon    2 年前

    有不同的解决方案,但您可能必须使用npm库。

    例如 glob-to-regexp (npm) -每周下载量超过2000万次(2023年11月)

    glob-to-regexp 将glob模式表达式转换为正则表达式:

    var globToRegExp = require('glob-to-regexp');
    var re = globToRegExp("**/*.{eot,otf,ttf,woff,woff2}");
    re.test("/this/is/an/example/a.woff"); // true
    

    您也可以在服务器上或在构建期间将regexp转换为字符串:

    var globToRegexp = require("glob-to-regexp")
    const re = globToRegexp("**/*.{eot,otf,ttf,woff,woff2}");
    const reString = re.toString();
    // -> "/^.*\\/.*\\.\\{eot\\,otf\\,ttf\\,woff\\,woff2\\}$/"
    

    在浏览器中,您可以使用regexp的字符串并将其转换回正则表达式:

    const re = new RegExp("/^.*\\/.*\\.\\{eot\\,otf\\,ttf\\,woff\\,woff2\\}$/");
    re.test("/this/is/an/example/a.woff"); // true