正则表达式无法在JavaScript中运行

时间:2011-06-28 10:09:23

标签: 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;
                        }

如果我使用变量而不是静态,那么它不起作用

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

提前致谢 Imdadhusen

5 个答案:

答案 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;
                            }