Javascript:RegExp对象创建问题

Javascript:RegExp对象创建问题,javascript,validation,Javascript,Validation,我希望使用以下正则表达式验证文件上载: /^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w ]*))+\.(ext)$/ 但是我希望能够指定ext过滤器 是这样吗 function validateFile(str, ext) { alert(str); var expr = new RegExp("/^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w ]*))+\.(" + ext.toLowerCase() + ")$/")

我希望使用以下正则表达式验证文件上载:

/^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w ]*))+\.(ext)$/
但是我希望能够指定
ext
过滤器

是这样吗

function validateFile(str, ext) {
    alert(str);
    var expr = new RegExp("/^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w ]*))+\.(" + ext.toLowerCase() + ")$/");
    alert(expr);
    return expr.test(str);  
}

使用RegExp构造函数时,不需要在开始和结束处包含斜杠:

var expr = /foo/;
相当于:

var expr = new RegExp("foo");
您只需注意模式字符串上的双转义反斜杠(
\
),例如:

var expr = /\\/;
应该是:

var expr = new RegExp("\\\\");
var expr = new RegExp("^(([a-zA-Z]:)|(\\\\{2}\\w+)\\$?)(\\\\(\\w[\\w ]*))+\\.("+
                      ext.toLowerCase + ")$");
这是因为在字符串文字中,反斜杠也用于转义字符

编辑:相当于

var expr = /^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w ]*))+\.(ext)$/;
应该是:

var expr = new RegExp("\\\\");
var expr = new RegExp("^(([a-zA-Z]:)|(\\\\{2}\\w+)\\$?)(\\\\(\\w[\\w ]*))+\\.("+
                      ext.toLowerCase + ")$");

请注意,您还可以使用不区分大小写的标志,在文字表示法中为
/foo/i
,与
RegExp
构造函数一起使用:
newregexp(“foo”,“i”)

ok,在删除斜杠之后-这就是我现在所拥有的-
新RegExp(^([a-zA-Z]:)|(\{2}\w+)\$)(\(\w[\w]*))(“+ext toLowerCase()”)
@wretrOvian:看看我的编辑,你需要双重转义斜杠,而不是删除它们。