0

假设我有一个名为 options 的对象。在对象内部,我有一个名为 imageTypes 的键。我正在尝试测试 png 是否与任何一种 imageTypes 匹配。我在这里做错了什么。感谢您的输入!

    var options = {
         imageTypes: /\.(gif|jpe?g|png)$/i
    }
    if (options.imageTypes.test(image/png)) {
        //do stuff
    }
4

3 回答 3

1

在调用 test 之前,您正在使用数学运算(即除法)。这将导致 RegEx 被一个数字调用,这并不能很好地工作。

如果 image 是您的变量,请删除/png. 或者,如果您尝试比较 'image/png'(即字符串),则必须在前后输入引号。

在此处的 jsFiddle 上对其进行了测试,您可以在控制台输出中找到结果。

于 2013-07-26T20:02:42.607 回答
0

如果您想将“image/png”作为字符串进行测试,那么您必须更改您的正则表达式,因为它现在检查点格式的图像扩展名。

var options = {
    imageType: function(pic) {
      return (/^image\/(gif|jpe?g|png)$/i).test(pic);
    }
};

// returns true
console.log(options.imageType('image/png'));
于 2013-07-26T20:24:24.407 回答
0

信息

希望这将帮助您了解您要实现的目标:http: //jsfiddle.net/pratik136/YZ5ZD/

var options = {
    imageTypes1: /\.(gif|jpe?g|png)$/i,
    imageTypes2: /image\/(gif|jpe?g|png)$/i
};
if (options.imageTypes1.test('.png')
    && options.imageTypes2.test('image/png')) {
    //do stuff
    showResult('true');
} else {
    showResult('false');
}

imageTypes1是一个正则表达式,它将匹配一个类似的字符串.png,同时imageTypes2试图匹配image/png


那么怎么了

您的代码示例中的语法错误是缺少引号image/png,而逻辑错误是您使用了错误的正则表达式。

于 2013-07-26T20:28:53.897 回答