3

我正在寻找使用 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)*$/
    }
});
4

1 回答 1

4

现在你正在尝试匹配任何一个字符,后跟提到的扩展名,所以试试这个模式:

图案

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

它将仅匹配 dot 后跟任何提到的扩展名,因此可能性为:

.doc
.DOC
.pdf
.PDF

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

图案

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

添加.+?之后^意味着“匹配除换行符以外的任何字符 0 次或更多次,直到满足下一个标记,还添加\.以匹配扩展之前的点。我还删除*了不需要的并且会导致重复扩展。

例子

filename.PDF

该文件将被匹配。

filename.exe

这将不匹配。

最终答案

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

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

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

于 2013-12-02T22:26:33.517 回答