我希望使用以下正则表达式来验证文件上传:
/^(([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);
}
答案 0 :(得分:1)
使用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")
的文字符号使用不区分大小写的标记。