繁体   English   中英

Javascript:RegExp对象创建问题

[英]Javascript: RegExp object creation problem

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

/^(([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 = /^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w ]*))+\.(ext)$/;

应该:

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

请注意,您还可以使用不区分大小写的标志,其文字表示法为/foo/i ,并带有RegExp构造函数: new RegExp("foo", "i")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM