我正在尝试让用户上传文件名中包含多个点的文件(例如“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 = '';
};
最佳答案
如果上面的代码只是尝试获取文件名的文件扩展名,那么您可以通过 .
将文件名拆分为数组,然后使用 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 = '';
}
关于jQuery 正则表达式,文件名中允许多个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38076992/