我有以下代码:
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
最佳答案
Javacript 似乎不支持 \Q
或 \E
,请查看以下内容:Javascript equivalent of Perl's \Q ... \E or quotemeta()
为什么以下正则表达式不起作用?如果您需要更严格的匹配,请描述您的确切要求,我相信您会得到有效的正则表达式的快速响应。
/^custom_.+\d\.pid/g
关于javascript - file.match(regex) 与提供的文件名不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44076739/