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

标签 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 = '';
};

最佳答案

如果上面的代码只是尝试获取文件名的文件扩展名,那么您可以通过 . 将文件名拆分为数组,然后使用 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/

相关文章:

excel - 如何使用 VBA 中的 getelementsbyclassname 从在线零售商的网页上抓取产品名称和定价数据?

regex - 删除 emacs 中多余的空行

javascript - 带有变量的复杂 Jquery 选择器

javascript - 如何在 AJAX 加载选项卡中初始化 jquery 函数?

c# - RequiredIf 没有触发客户端验证

jQuery 验证,同一功能的多个表单 ID

html - :before to respect parent's padding

html - 任何人都可以向我解释什么(内容 : "\f01a"; ) on css means? 以及如何使用它?

java - 对非单词字符分割进行异常(exception)处理

python - 使用 RegEx 匹配 IP 地址