javascript - if 语句在应用 match() 方法时找不到字符串

标签 javascript regex

需要进行简单的操作。如果 fileExt 不是 .jpg .jpeg .png .pdf,则应显示警告。

var fileName = 'upload-success.png';
var fileExt = fileName.match(/\.[a-z]{3,4}$/i); // fails
// var fileExt = '.png'; // works

if (fileExt !== ".jpg" && fileExt !== ".jpeg" && fileExt !== ".png" && fileExt !== ".pdf") {
    alert('Incorrect Extension: '+fileExt);
}

在两种情况下设置 fileExt 结果是一样的。 但是在使用匹配的情况下 - if 语句找不到字符串。

http://jsfiddle.net/mCjSW/1/

最佳答案

直接用match()怎么样?检查文件扩展名?

var f = 'foo.png';

if (!f.match(/\.(jpe?g|png|pdf)$/))
    alert('invalid extension');

由于我们不需要match() 返回的数组,我们可以只使用test()。这里:

if (!/\.(jpe?g|png|pdf)$/.test(f))
    alert('invalid extension');

请记住,查看文件的扩展名并不能确保其内容与扩展名的文件类型相匹配;但是,过滤扩展名可确保用户不会意外选择/上传错误的文件。查看文件的 MIME 类型绝对是可取的,但这种检查必须在服务器端完成(当然有很多方法可以绕过使用 javascript 完成的检查,最明显的是在浏览器中停用 javascript 支持)。

关于javascript - if 语句在应用 match() 方法时找不到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14053308/

相关文章:

c++ - 如何在正则表达式中表示 C++ 函数名?

javascript - JQuery AJAX 调用 php 函数

javascript - 使用 javascript 将下拉列表值传递到文本框

javascript - 如何在 javascript 上创建一个简单的重力引擎

javascript - 当指针按下时检测 div 外部的 pointmove 事件

javascript - Phonegap应用程序通过wifi发送数据

regex - 从正则表达式中排除一些单词

php - 正则表达式 - 排除子域(preg_match)

python - 使用 Python 正则表达式在字符之间拆分字符串

python - 匹配两个 Python 字符串中的字符