我正在尝试编写一个只接受JPEG,JPG或PDF格式文件的正则表达式。我的尝试是:
/^image|\/(jpe?g|pdf)$/i
但是,就目前而言,它不会接受PDF格式(因为'image / *'部分)。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:4)
这个表达没有多大意义。您有一个替代说法是匹配^image
或匹配/(jpe?g|pdf)$
。
如果您想匹配image/jpg
,image/jpeg
和application/pdf
,那么:
/^(?:image\/jpe?g|application\/pdf)$/
但请注意,PDF可以包含其他一些MIME类型。也许:
/^(?:image\/jpe?g|application\/(?:pdf|x-pdf|x-bzpdf|x-gzpdf))$/
......会更具包容性。
答案 1 :(得分:1)
并非一切都需要成为正则表达式:
function isValidMimeType(type) {
return [
'image/jpg',
'image/jpeg',
'application/pdf',
'application/x-pdf',
'application/x-bzpdf',
'application/x-gzpdf'
].indexOf(type) > -1;
}
如果坚持使用正则表达式,我建议使用多个,以便代码仍然可读:
function isValidMimeType(type) {
if (/^image\/jpe?g$/.test(type)) {
return true;
} else if (/^application\/(?:x-|x-bz|x-gz)?pdf$/.test(type)) {
return true;
}
return false;
}
当然,这段代码可以写得更短。没有理由这样做。当你将其浓缩为:
时,你牺牲了可读性function isValidMimeType(type) {
return /^(?:image\/jpe?g|application\/(?:x-(?:bz|gz)?)?pdf)$/.test(type);
}
祝你好运另外添加一个mime类型。