Mon modèle actuel est:Regex pour exclure un motif dans le nom de fichier
/\.(scss|js|jsx)$/
Je veux exclure des fichiers qui se terminent par "-test.js"
J'ai essayé:
/(?!-test)\.(scss|js|jsx)$/
mais ça ne marche pas.
Mon modèle actuel est:Regex pour exclure un motif dans le nom de fichier
/\.(scss|js|jsx)$/
Je veux exclure des fichiers qui se terminent par "-test.js"
J'ai essayé:
/(?!-test)\.(scss|js|jsx)$/
mais ça ne marche pas.
Essayez celui-ci:
/^([a-z0-9-_](?!-test\.))+\.(scss|js|jsx)$/
Aucun des caractères du nom du fichier doit être suivi par -test.
.
Je viens de le réparer. – Adam
js|jsx
peut être raffiné/accéléré en utilisant: jsx?
.
scss
peut être accéléré en utilisant scs{2}
.
En mettant des "alternatives" plus courtes avant les plus longues, vous améliorerez la vitesse. (jsx?|scs{2})
Motifs:
/^(.(?!-test\.js$))+\.(jsx?|scs{2})$/
ou dans près de la moitié des étapes, du fait de groupe de capture enlevé:
/^(?!.*-test\.js$).*\.(jsx?|scs{2})$/
cas de test:
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
Comme JS ne prend pas en charge lookbehind, vous pouvez faire ^(?!.*-test\.js$).*\.(js|scss|jsx)$
comme solution de contournement.
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'));
})
thx cela fonctionne, mais pas parfaitement: l'antipattern exact devrait être "* -test.js", donc pas d'espace d'autres caractères entre "test" et ".js" et le moins fait partie du motif https: // regex101 .com/r/upQVte/4 – jeff
@jeff Désolé à ce sujet. Mise à jour ma réponse juste au cas où. – Piyush
merci, "sadadf-testddd.js" est toujours un mauvais négatif – jeff
Quelle langue/environnement vous en cours d'exécution dans ce modèle? Pouvez-vous offrir quelques exemples d'intrants et votre résultat attendu pour chacun? Veuillez poster votre implémentation regex spécifique à votre langue. – mickmackusa
javascript, le nom de fichier blabla.js doit correspondre, blabla-test.js ne doit pas correspondre. tout avec .scss et .jsx devrait correspondre. utilisé pour config webpack – jeff