使用Foundation Abide验证文件类型

Validate File Type using Foundation Abide

本文关键字:文件 类型 验证 Abide Foundation 使用      更新时间:2024-01-23

我希望使用Foundation的Abide插件来验证上传到type="file"输入标记中的文件扩展名的类型,但我在根据RegExp正确验证检查时遇到了问题。

html:

<div class="large-2 columns button">
    <input id="uploadResume" type="file" required pattern="resume" />
    <small class="error">PDF or Word Document only please</small>
</div>

javascript:

$(document)
    .foundation().foundation('abide', {
        patterns: {
        // check if the last 3 letters are acceptable
        resume: /^.(doc|DOC|pdf|PDF)*$/
    }
});

现在您正试图匹配后面跟有上述扩展名的任何一个字符,所以请尝试以下模式:

图案

/'.(doc|DOC|pdf|PDF)$/

它将只匹配后面跟着任何提到的扩展的点,所以可能性是:

.doc
.DOC
.pdf
.PDF

但如果你想匹配整个文件名+扩展名,请使用这个:

图案

/^.+?'.(doc|DOC|pdf|PDF)$/

^之后添加了.+?,意思是"匹配除新行之外的任何字符0次或更多次,直到满足下一个令牌,还添加了'.,以匹配扩展之前的点。"。我还删除了*,这是不需要的,会导致重复扩展。

示例

filename.PDF

将匹配此文件。

filename.exe

这将不匹配。

最终答案

使用第二种模式作为内联模式:

<input type="file" required pattern="^.+?'.(doc|DOC|pdf|PDF)$" />.

显然,在使用内联模式时会出现一些问题,迫使你删除模式开头和结尾的前斜杠。此外,命名模式似乎很奇怪,我不确定为什么会这样。