正则表达式匹配文件名而不带路径

时间:2011-12-14 08:35:22

标签: javascript regex

我正在使用此代码在SharePoint列表附件中的文件名中查找空格。

function PreSaveAction() {
    var attachment;
    var filename = "";
    var fileNameSpecialCharacters = new RegExp('\\s', 'g');
    try {
        attachment = document.getElementById("idAttachmentsTable").getElementsByTagName("span")[0].firstChild;
        filename = attachment.data;
    } catch (e) {}
    if (fileNameSpecialCharacters.test(filename)) {
        alert("Please remove the special characters and white spaces from file attachment name.");
        return false;
    } else {
        return true;
    }
}

在IE中,它会检查“整个路径”中的空格而不是文件名。在所有其他浏览器中它工作正常,

任何人都可以帮助我让这段代码只检查文件名,而不是整个路径吗?

3 个答案:

答案 0 :(得分:2)

从路径名中拆分文件名。然后仅测试文件名。

答案 1 :(得分:1)

根据stema的说法,这将同时检查/\

\s(?=[^/\\]*$)

答案 2 :(得分:0)

你可以做这样的事情

\s(?=[^\\]*$)

这意味着找到空格,但前提是在字符串结尾之前没有\

here on Regexr

但是,当然,只有当分割目录的字符是\时,这才有效。也许JavaScript能以某种方式从操作系统中获取这个角色(我不知道那个深度的JavaScript)?