file.match(正则表达式)与提供的文件名不匹配

时间:2017-05-19 18:28:37

标签: javascript regex

我有以下代码:

fs.readdir('.', (err, files) => {
    files.forEach(file => {
        if (file.match(/^\Qcustom_\E.+\d\Q.pid\E/)) {
            var pid = fs.readfile(file, function (err, data) {
                if (err) throw err;
                return data.toString();
            });
            console.log(pid);
        }
    });
});

在我的目录中,我有几个文件,例如custom_Component1.pidcustom_Component2.pidcustom_NewComponent3.pid等,每个文件只包含一行(pid)。

但是,上面的代码与文件不匹配,即使根据我的Regex101,正则表达式也是正确的。

如果我console.log(file),则文件名会准确显示我的预期,就像custom_Component1.pid

一样

1 个答案:

答案 0 :(得分:1)

看起来Javacript不支持\Q\E,请查看以下内容:Javascript equivalent of Perl's \Q ... \E or quotemeta()

为什么以下正则表达式不起作用?如果你需要更严格地匹配,描述你的确切要求,我相信你会得到一个有效的正则表达式的快速响应。

/^custom_.+\d\.pid/g