JavaScript对象问题

时间:2013-07-26 19:57:59

标签: javascript

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

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

3 个答案:

答案 0 :(得分:1)

在调用测试之前,您正在使用数学运算(即除法)。这将导致RegEx被一个数字调用,这实际上并不是很好。

如果图片是您的变量,请删除/png。或者如果你想比较'image / png'(即字符串),那么你必须在之前和之后输入引号。

在jsFiddle here上测试过,你可以在控制台输出中找到结果。

答案 1 :(得分: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'));

答案 2 :(得分: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周围缺少引号,而逻辑错误是您使用了错误的正则表达式。