如何在javascript中使用正则表达式验证文件扩展名

How to validate file extensions using regular expression in javascript

本文关键字:正则表达式 验证 文件 扩展名 javascript      更新时间:2023-09-26

我有一个带有提交按钮的文本框。点击提交按钮后,我想检查文件名是否存在,也想验证文件名(只允许。php扩展名)文件扩展名。

<input type="text" name="textfield1" id="text1" />
<input type="button" value="submit" name="submit" id="submit" onclick="login()"; />
<input type="reset" value="clear" id="reset" name="reset" />
</form>

这里看起来像是一个X-Y问题。以下是您应该考虑的几点:

  • 检查文件是否存在(可能在服务器上)不能可靠地在客户端完成
  • 至少可以说,任何客户端验证都是不够的。不可靠
  • 为什么正则表达式?这里有更好的工具。更好,比如:更可靠,更容易,也可能更快。
  • 检查扩展单独不会削减它。文件名的其余部分也可能无效。

尽管如此,为什么不检查文件名中的最后四个字符呢?假设您只允许.php扩展,一个简单的:

var inputVal = inputElem.value.trim();
if (inputVal.substr(-4).toLowerCase() === '.php')

应该没问题。您也可以在服务器端做同样的事情:

if (strtolower(trim(substr($_POST['inputName'], -4))) === '.php')

当然,你仍然需要检查用户提交的其他禁止/棘手字符的值,如引号,空格,换行符,(反)斜杠,哈希等…总而言之,我认为你最好重新考虑一下你的方法。也许你可以告诉我们你真正想做的是什么,这样我们就可以为你推荐一个替代方案。

一旦你得到了工作,检查文件是否实际存在可以很容易地完成使用PHP函数:file_exists。如果文件存在则返回true,如果不存在则返回fals。

使用ajax检查文件名是否存在,这里您只想上传php文件,因此不需要使用正则表达式

请参考下面的jsfiddle链接

(http://jsfiddle.net/udhaya2006/BKMju/1/)

这对你肯定有帮助