我希望使用Foundation的Abide插件来验证上传到type ="文件中的文件扩展名的类型"输入标签,但我有麻烦正确验证对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)*$/
}
});
答案 0 :(得分:4)
现在你试图匹配任何一个字符,然后是上面提到的extenions,所以试试这个模式:
<强>模式强>
/\.(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)$" />.
显然在使用内联模式时存在一些问题,这会强制您在模式的开头和结尾处删除正斜杠。此外,命名模式看起来效果很好,我不确定为什么会这样。