假设我有一个名为options的对象。在对象内部,我有一个名为imageTypes的键。我试图测试png是否匹配任何一个imageTypes。我在这做错了什么。感谢输入的人!
var options = {
imageTypes: /\.(gif|jpe?g|png)$/i
}
if (options.imageTypes.test(image/png)) {
//do stuff
}
答案 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
周围缺少引号,而逻辑错误是您使用了错误的正则表达式。