正则表达式在JavaScript中不起作用

正则表达式在JavaScript中不起作用,javascript,regex,Javascript,Regex,如果我在这里写jpg | png | jpeg | gif的话,这是很好的工作 if (!(ext && /^(jpg|png|jpeg|gif)$/.test(ext))) { alert('Error: extension is not allowed!' + Extensions + ' file ext: ' + ext); return false;

如果我在这里写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

你应该这样做:

(new RegExp("jpg|png|jpeg|gif")).test(ext)

您对正则表达式使用的语法无效。如果要将其存储在变量中,则仍必须使用第一个示例中的正则表达式

因此:

会有用的。您的第二个示例是尝试匹配单词“Extensions”。

尝试以下操作:

var Extensions = /^(jpg|png|jpeg|gif)$/;
if (!(ext && Extensions.test(ext))) {
    alert('Error: extension is not allowed!' + Extensions + ' file ext: ' + ext);
    return false;
}

要使用变量,需要使用RegExp对象:

new RegExp('^(' + Extensions + ')$').test(ext)
或者将整个正则表达式赋给变量:

var Extensions = /^(jpg|png|jpeg|gif)$/; 
Extensions.test(ext)
也许可以称之为allowedExtensions或其他什么。

它不会出错

var Extensions = "/^(jpg|png|jpeg|gif)$/";
    if (!(ext && Extensions.test(ext))) {
                                alert('Error: extension is not allowed!' + Extensions + ' file ext: ' + ext);
                                return false;
                            }

只要使用的字符串是有效的正则表达式,就可以这样做。我认为需要省略引号,例如,
var Extensions=/^(jpg | png | jpeg | gif)$/但我的要求是我也有变量的动态值你的答案和megaperlz一样。但我的要求是我也有变量的动态值我想知道!为什么要否决投票?
var Extensions = "/^(jpg|png|jpeg|gif)$/";
    if (!(ext && Extensions.test(ext))) {
                                alert('Error: extension is not allowed!' + Extensions + ' file ext: ' + ext);
                                return false;
                            }