我试图让用户上传文件名中包含多个点的文件(例如" 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 = '';
};
答案 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 = '';
}