将文件列在目录中,其中文件名与JS中的正则表达式匹配

时间:2014-02-21 12:27:41

标签: javascript regex node.js meteor

我想获取一个遵循特定模式的目录中的所有文件名。我发现,我可以通过以下方式实现这一目标:

var fs = require('fs');

fs.readdir( dir, function(err, list) {
    if(err)
        throw err;
    var regex = new RegExp(".*");
    list.forEach( function(item) {
    if( regex.test(item) ) 
       console.log(item);
    }); 
});

我想知道,如果有另一种可能性而不使用循环,例如将正则表达式传递给fs.readdir(..) 这在某种程度上是可能的,还是我必须使用循环?

2 个答案:

答案 0 :(得分:1)

根据文档,函数fs.readdir在调用回调之前不会使用正则表达式来过滤文件名。它明确提到使用readdir(3),它没有正则表达式的概念。

所以你必须遍历结果并过滤它们。或者也许使用可以为您完成的第三方库,但fs.readdir本身不会这样做。

答案 1 :(得分:1)

您可以使用npm atmosphere package来使用其他NPM模块。这将允许您使用流行的glob NPM module。这使用了glob模式,它比匹配正则表达式模式更常用于匹配文件名。