Regex匹配除“”之外的所有字符;.js”;

Regex match all characters except ".js"

本文关键字:字符 js Regex      更新时间:2023-09-26

我正试图用javascript将模块名称与其路径分离。我在上面接收regex的字符串的末尾可能有也可能没有".js",但在第二个匹配组中,如果有".js",我就不需要它。这是迄今为止的正则表达式:

(['.'/]?.+'/)?(.+['.js]?)

例如,如果我有字符串:/piechart.js

匹配组1:./

比赛组2:花图

更多测试/示例:https://regex101.com/r/nL9lK3/1

我建议先过滤字符串,然后用正则表达式来检索模块名称。

function getModule (filePath) {
    var arr = filePath.split('/');
    var len = arr.length;
    var path = arr.splice(0, arr.length - 1).join('/');
    var moduleName = arr[0].match(/([a-zA-Z'-'_]+)(?=('.js)?)/gi)[0];
    return [path, moduleName];
}

此函数将返回一个由pathmoduleName组成的数组。

所以试试这个

('/?.+'/)*(.+?)('.js)?$

并且只使用前两个匹配的组(这里是更新的regex101)。

第一组:('/?.+'/)*匹配所有可能的路径,以最后一个斜线结束。

第二组:(.+?)匹配路径后面的所有内容,但使用了一个惰性量词,允许第三组匹配(如果可以的话)。

第三组:('.js)?匹配字符串末尾可能的.js