这是工作正常如果我在这里写jpg | png | jpeg | gif ...
if (!(ext && /^(jpg|png|jpeg|gif)$/.test(ext))) {
alert('Error: extension is not allowed!' + Extensions + ' file ext: ' + ext);
return false;
}
如果我使用变量而不是静态,那么它不起作用
var Extensions = "jpg|png|jpeg|gif";
if (!(ext && /^(Extensions)$/.test(ext))) {
alert('Error: extension is not allowed!' + Extensions + ' file ext: ' + ext);
return false;
}
提前致谢 Imdadhusen
答案 0 :(得分:1)
你应该这样做:
(new RegExp("jpg|png|jpeg|gif")).test(ext)
答案 1 :(得分:1)
您使用的是正则表达式的无效语法。如果要将其存储在变量中,则仍必须使用第一个示例中的正则表达式。
所以:
var Extensions = /^(jpg|png|jpeg|gif)$/;
if (!(ext && Extensions.test(ext)))
会奏效。您的第二个示例是尝试匹配“扩展”一词。
答案 2 :(得分:0)
试试这个:
var Extensions = /^(jpg|png|jpeg|gif)$/;
if (!(ext && Extensions.test(ext))) {
alert('Error: extension is not allowed!' + Extensions + ' file ext: ' + ext);
return false;
}
答案 3 :(得分:0)
要使用变量,您需要使用RegExp对象:
new RegExp('^(' + Extensions + ')$').test(ext)
或者将整个正则表达式分配给变量:
var Extensions = /^(jpg|png|jpeg|gif)$/;
Extensions.test(ext)
也许称它为allowedExtensions或者其他东西。
答案 4 :(得分:0)
它不会出错
var Extensions = "/^(jpg|png|jpeg|gif)$/";
if (!(ext && Extensions.test(ext))) {
alert('Error: extension is not allowed!' + Extensions + ' file ext: ' + ext);
return false;
}