Javascript 用于筛选包含.part或.temp的文件名的常规表达式失败
我正忙于一个node/express应用程序,试图忽略所有包含.part或.temp作为文件名一部分的文件名。由于某种原因,我编写的正则表达式完全失败了。。。知道我做错了什么吗 我的正则表达式:Javascript 用于筛选包含.part或.temp的文件名的常规表达式失败,javascript,regex,Javascript,Regex,我正忙于一个node/express应用程序,试图忽略所有包含.part或.temp作为文件名一部分的文件名。由于某种原因,我编写的正则表达式完全失败了。。。知道我做错了什么吗 我的正则表达式: /[xyz]*\.part+|\.temp+\/ 如果将表达式插入regex101.com或类似文件,您应该会看到问题所在 如果要筛选出包含.part或.temp的文件名: if (!/\.(?:part|temp)/.test(filename)) { // Doesn't have it,
/[xyz]*\.part+|\.temp+\/
如果将表达式插入regex101.com或类似文件,您应该会看到问题所在 如果要筛选出包含
.part
或.temp
的文件名:
if (!/\.(?:part|temp)/.test(filename)) {
// Doesn't have it, the name's okay
}
如果您愿意,也可以是/\.part\.temp/
。(这更容易理解…)
测试示例:
var测试=[
{str:“foo”,expect:true},
{str:“foo.part”,expect:false},
{str:“.partfoo”,expect:false},
{str:“foo.partfoo”,expect:false},
{str:“bar”,expect:true},
{str:“bar.temp”,expect:false},
{str:“.tempbar”,expect:false},
{str:“bar.tempbar”,expect:false}
];
测试。forEach(函数(条目){
var结果=!/\(?:零件温度)/.测试(entry.str);
if(result==entry.expect){
console.log(“'”+entry.str+“'=>”+result+“GOOD”);
}否则{
console.log(“'”+entry.str+“'=>“+result+”错误应为“+entry.expect”);
}
});代码>
。作为控制台包装器{
最大高度:100%!重要;
}
什么是[xyz]*
部分?是的,删除[xyz]*
,/\(?:part | temp)/
就足够了。@T.J.Crowder不是所有非特殊字符组成的字符集吗?@user2094257:嗯……不……一点也不。建议,克劳德,这根本不起作用。我的代码:var-watcher=chokidar.watch('./下载',{忽略:'/\.(?:part | temp)/',持久:true})@user2094257:那么这与chokidar.watch
有关。正则表达式按你说的做。请参阅我添加到答案中的测试。