我有以下代码:
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.pid
,custom_Component2.pid
,custom_NewComponent3.pid
等,每个文件只包含一行(pid)。
但是,上面的代码与文件不匹配,即使根据我的Regex101,正则表达式也是正确的。
如果我console.log(file)
,则文件名会准确显示我的预期,就像custom_Component1.pid
答案 0 :(得分:1)
看起来Javacript不支持\Q
或\E
,请查看以下内容:Javascript equivalent of Perl's \Q ... \E or quotemeta()
为什么以下正则表达式不起作用?如果你需要更严格地匹配,描述你的确切要求,我相信你会得到一个有效的正则表达式的快速响应。
/^custom_.+\d\.pid/g