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

标签 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._-]+$/);

但结果是一样的。

最佳答案

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

关于javascript - 正则表达式在 IE 和 Chrome 中总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21860928/

相关文章:

javascript - Drupal - 将自定义 JS 和 CSS 添加到面板

javascript - Jquery - 通过单击 li 设置其他 li 元素的样式

javascript - 如何删除所有输入大纲?

javascript - 按单词拆分,除非短语包含该单词

java - 正则表达式 - 用大写字母替换下划线小写字母

javascript - Angularjs正则表达式限制字符数问题

javascript - 对数组进行排序以对匹配的元素进行分组,但保持原始顺序

Java:替换第一个位置上除符号 "+"之外的所有非数字符号

regex - 使用 grep 等 bash 工具解决难题

javascript - ReactJS - map 中的 map