Javascript RegEx失败

时间:2013-12-13 18:24:30

标签: javascript regex

我正在尝试编写一个只接受JPEG,JPG或PDF格式文件的正则表达式。我的尝试是:

/^image|\/(jpe?g|pdf)$/i

但是,就目前而言,它不会接受PDF格式(因为'image / *'部分)。

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:4)

这个表达没有多大意义。您有一个替代说法是匹配^image或匹配/(jpe?g|pdf)$

如果您想匹配image/jpgimage/jpegapplication/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类型。