Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中使用正则表达式验证文件扩展名_Javascript_Php_Jquery_Regex - Fatal编程技术网

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

如何在javascript中使用正则表达式验证文件扩展名,javascript,php,jquery,regex,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

我有一个带有“提交”按钮的文本框。单击“提交”按钮后,我想检查文件名是否存在,还想验证文件名(只允许使用.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\u exists
。如果文件存在,则返回
true
,如果不存在,则返回fals。

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

请参考下面的JSFIDLE链接

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

这将帮助您确定

正则表达式将在这里做什么?用于文件名验证的javascript有许多字符串方法,如endsWith、indexOf等。如何检查此php是否退出?如果退出,reult希望以相同的方式显示该php文件page@user... 嗯<代码>文件存在对我来说似乎是不言而喻的,不是吗?在我的回答中补充了这一点