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

时间:2014-07-28 10:43:51

标签: javascript php jquery regex

我有一个带提交按钮的文本框。单击提交按钮后,我想检查文件名是否存在,还要验证文件名(仅允许.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>

2 个答案:

答案 0 :(得分:1)

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

  • 检查文件是否存在(大概是在服务器上)无法在客户端可靠地完成
  • 任何客户端验证都不足以说明问题。它不可靠
  • 为何选择正则表达式?这里有更好的工具。更好,如:更可靠,更容易,也可能更快
  • 单独检查扩展程序不会删除它。文件名的其余部分也可能无效。

尽管如此,为什么不检查文件名中的最后四个字符。鉴于您只允许.php个扩展名,只需简单:

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

应该做得很好。你也可以在服务器端做同样的事情:

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

当然,您仍然需要检查用户提交的其他禁止/棘手字符的值,如引号,空格,换行符,(反斜)斜杠,哈希等... All in所有,我认为你很好地重新思考你的方法。也许告诉我们你真正想做的是什么,所以我们可以推荐一种替代当前解决方案的方法。

一旦您完成了这项工作,可以使用PHP函数轻松完成检查文件是否存在:file_exists。如果文件存在,则返回true,否则返回fals。

答案 1 :(得分:0)

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

请参阅以下jsfiddle链接

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

这将有助于您确定