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



我使用以下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._-]+$/);

但结果是一样的。

感谢@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");
}

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

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

最新更新