正则表达式总是在IE和Chrome中返回false

时间:2014-02-18 17:22:13

标签: javascript regex

我使用以下Javascript来检查文件名是否仅包含字母,数字,短划线和下划线。

var patt = /^[a-zA-Z0-9._-]+$/;
if (!patt.test(filename)) {
    alert("Filename contains invalid characters");
}

Firefox工作正常,包含空格的文件名被拒绝而其他文件名被允许,但在IE和Chrome中,无论传递给它的文件名是什么,它总是返回FALSE。

我也尝试过使用RexgExp对象:

var patt = new RegExp(/^[a-zA-Z0-9._-]+$/);

但结果是一样的。

2 个答案:

答案 0 :(得分:0)

感谢来自@EvertonAgner的提示,我检查了正在传递的文件名,Chrome和IE正在添加“C:\ fakepath \”。所以我需要在检查之前将其除去。

这是现在似乎正在运行的代码:

var filename = filename.split("\\").pop();
var patt = /^[a-zA-Z0-9._-]+$/;
if (!patt.test(filename)) {
    alert("Filename contains invalid characters");
}

答案 1 :(得分:0)

鉴于你的正则表达式,我会检查你正在测试的filename是不是一个空字符串。

由于正则表达式使用+修饰符,因此要求输入必须至少包含一个字符。