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

jQuery正则表达式,允许文件名中有多个点,jquery,html,regex,forms,Jquery,Html,Regex,Forms,我试图让用户能够上传文件名中有多个点的文件(例如“file..jpg”、“test.file.jpg”或“file.jpg.jpg”) 我有下面的表达式,目前只允许一个点(例如“file.jpg”)通过\.: var ext = this.value.match(/\.(.+)$/)[1]; 关于如何做到这一点,有什么建议吗 完整脚本: var ext = this.value.match(/\.(.+)$/)[1]; switch (ext) { case 'pdf': ca

我试图让用户能够上传文件名中有多个点的文件(例如“file..jpg”、“test.file.jpg”或“file.jpg.jpg”)

我有下面的表达式,目前只允许一个点(例如“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 = '';
}

上面的代码是否试图获取文件名的文件扩展名?如果是这样的话,
this.value.split('.').pop()
就可以了。啊,是的。我的错。用完整的脚本更新了问题。@Rorymcrossan这就成功了,伙计!你应该将此作为答案发布,我会接受它作为解决方案。一开始我被愚弄,以为这并没有解决问题,但这只是因为扩展上的大小写敏感问题。非常感谢你的帮助,没问题。我为你添加了一个答案谢谢你的回复!它确实允许文件名中有多个点的文件,但似乎对文件类型的验证被破坏,所有文件类型都通过了。
var validExt = [ 'pdf', 'jpg', 'png' ];
var ext = this.value.split('.').pop();

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