我目前的模式是:
/\.(scss|js|jsx)$/
我想排除以“-test.js”结尾的文件
我试过了:
/(?!-test)\.(scss|js|jsx)$/
但它不起作用。
答案 0 :(得分:2)
由于JS不支持lookbehind,您可以^(?!.*-test\.js$).*\.(js|scss|jsx)$
作为解决方法。
var testFiles = ['p-test.js',
'q-test.scss',
'r-test.jsx',
'p.js',
'q.scss',
'r.jsx',
'sadadf-testddd.js'
];
var myRegexp = /^(?!.*-test\.js$).*\.(js|scss|jsx)$/g;
testFiles.forEach(function(file) {
var match = file.match(myRegexp)
console.log(file + " : " + (match ? 'matches' : 'does not match'));
})
答案 1 :(得分:1)
js|jsx
可以使用以下内容进行优化/加速:jsx?
scss
可以加快scs{2}
的速度
缩短"替代品"在较长时间之前会提高速度。 (jsx?|scs{2})
模式:
/^(.(?!-test\.js$))+\.(jsx?|scs{2})$/
或近一半的步骤,由于删除了捕获组:
/^(?!.*-test\.js$).*\.(jsx?|scs{2})$/
测试用例:
a-test.js #fail
b-test.scss #pass
c-test.jsx #pass
d.js #pass
e.scss #pass
f.jsx #pass
g-testg.js #pass
h-testh.scss #pass
i-testi.jsx #pass
答案 2 :(得分:0)
试试这个:
/^([a-z0-9-_](?!-test\.))+\.(scss|js|jsx)$/
文件名的所有字符都不应跟-test.
。