jQuery正则表达式,允许在文件名中有多个点

时间:2016-06-28 13:01:30

标签: jquery html regex forms

我试图让用户上传文件名中包含多个点的文件(例如" file..jpg"," test。 file.jpg"或者" file.jpg.jpeg")。

我有以下表达式,目前只允许一个点(例如" file.jpg")到\.

var ext = this.value.match(/\.(.+)$/)[1];

有关如何实现这一目标的任何建议吗?

完整的脚本:

var ext = this.value.match(/\.(.+)$/)[1];
switch (ext) {
    case 'pdf':
    case 'jpg':
    case 'png':
        break;
    default:
        alert('Not allowed file type');
        this.value = '';
};

2 个答案:

答案 0 :(得分:1)

尝试

//var files = this.value.match(/\.([^.]+)$/)[1];
var ext = "test.file.jpg".match(/\.([^.]+)$/)[1];
switch (ext) {
    case 'pdf':
    case 'jpg':
    case 'jpeg':
    case 'png':
        alert('file type allowed');
        break;
    default:
        alert('Not allowed file type');
        this.value = '';
};

答案 1 :(得分:1)

如果上面的代码只是尝试获取文件名的文件扩展名,那么您可以通过.将文件名拆分为数组,然后使用pop()。您还可以将有效扩展名放在数组中,并使用indexOf()检查有效性。试试这个:

var validExt = [ 'pdf', 'jpg', 'png' ];
var ext = this.value.split('.').pop();

if (validExt.indexOf(ext.toLowerCase()) == -1) {
    alert('Not allowed file type');
    this.value = '';
}