Dies ist der Code:Warum stimmt die folgende Dateierweiterung Regex nicht überein?
isValid = field.uploads.forEach(upload => {
console.log(upload.file)
console.log('ext:', _.getFileExt(upload.file.name))
console.log('reg:', regex)
console.log('res:', regex.test(_.getFileExt(upload.file.name)))
})
Dies sind die Protokolle:
ext: jpg
reg: /^.*\.(.jpg)$/i
res: false
Wie Sie sehen können, auch wenn die Datei die Regex ist jpg gibt false zurück. Warum ist das?
EDIT:
Hier sind die Utility-Funktionen:
_.listToRegex = (array) => {
return new RegExp('^.*\\.(' + array.join('|') + ')$', 'i')
}
_.getFileExt = (string) => {
return string.split('.').pop()
}
Sie haben ein zusätzliches '.' im Muster neben' jpg'. Entfernen Sie es. Der '_.listToRegex' fügt den Punkt jedoch nicht dem Muster hinzu. Es gibt noch etwas im Code, das es hinzufügen könnte. Mit 'regex.test (_. GetFileExt (upload.file.name))' testest du 'jpg' mit einem vollen String Regex, es wird falsch sein, da es kein' .' im '_.getFileExt (Upload .file.name) '. –