【问题标题】:What's the (JavaScript) Regular Expression I should use to ensure a string is a valid file name?我应该使用什么(JavaScript)正则表达式来确保字符串是有效的文件名?
【发布时间】:2010-09-12 22:47:57
【问题描述】:

我目前仍在学习 RegEx,但目前有人可以帮我解决这个问题吗?我对格式化字符串有一些特殊要求:

  1. 没有目录。只是文件名。
  2. 文件名必须全部小写。
  3. 空格需要替换为下划线。

应该不难,但我时间紧迫,我不确定确保文件名有效的“正确”方式(即我忘记了哪些字符应该对文件名无效)。

【问题讨论】:

    标签: javascript regex filenames


    【解决方案1】:

    如果您非常着急,通常可以在 http://regexlib.com/ 的库中找到可接受的正则表达式。 编辑说:Here's one that might work for you:

    ([0-9a-z_-]+[\.][0-9a-z_-]{1,3})$
    

    【讨论】:

    • 大声笑...打败我了 :) 投了赞成票
    【解决方案2】:

    我建议使用 RegExp 和其他 javascript 的简单组合:

    var a = "c:\\some\\path\\to\\a\\file\\with Whitespace.TXT";
    a = a.replace(/^.*[\\\/]([^\\\/]*)$/i,"$1");
    a = a.replace(/\s/g,"_");
    a = a.toLowerCase();
    alert(a);
    

    【讨论】:

      【解决方案3】:

      如果您从用户那里获取字符串路径(例如,通过读取文件上传字段的 .value),您实际上无法确定路径分隔符是什么。它可能是反斜杠(Windows)、正斜杠(Linux、OS X、BSD 等)或其他完全在旧的或晦涩的操作系统上的东西。以正斜杠或反斜杠分割路径将涵盖常见情况,但最好包含用户覆盖文件名的功能,以防我们猜错了。

      至于“无效字符”,这些也取决于操作系统。可能最简单的方法是用下划线等占位符替换所有非字母数字。

      这是我使用的:

      var parts= path.split('\\');
      parts= parts[parts.length-1].split('/');
      var filename= parts[parts.length-1].toLowerCase();
      filename= filename.replace(new RegExp('[^a-z0-9]+', 'g'), '_');
      if (filename=='') filename= '_'
      

      【讨论】:

        猜你喜欢
        • 2023-03-02
        • 1970-01-01
        • 2018-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多