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:看看我的编辑,你需要双重转义斜杠,而不是删除它们。