【问题标题】:RegExp for clean file and folder namesRegExp 用于干净的文件和文件夹名称
【发布时间】:2010-10-07 11:48:52
【问题描述】:

我正在使用 jQuery 构建文件管理器。 用户可以创建文件夹和上传文件。 我需要一个正则表达式(javascript)来检查输入的文件夹名或上传的文件名是否为网络保存。 (不允许使用特殊字符或空格)

名称只能包含字母数字值(a-z、A-Z、0-9)、下划线 (_) 和破折号 (-)

【问题讨论】:

  • 你有没有尝试过?如果您学习正则表达式,它只会对您有好处,这是一个基本的。这应该是一个开始:regular-expressions.info
  • 我强烈认为这是一个常见问题解答!只需搜索[regex] +filename +validate
  • @Felix Kling 感谢您的提示!目前没有时间学习它,但我会在不久的将来:)

标签: javascript jquery regex


【解决方案1】:

不要打扰你的访客,为他做吧:)

var cleanName = function(name) {
    name = name.replace(/\s+/gi, '-'); // Replace white space with dash
    return name.replace(/[^a-zA-Z0-9\-]/gi, ''); // Strip any special charactere
};

cleanName('C\'est être');

【讨论】:

    【解决方案2】:

    这看起来很简单:

    /^[\w.-]+$/
    

    Useful tutorial

    【讨论】:

    • /^[\w\-]+$/ :连字符需要反斜杠
    • @Fabrizio:不在捕获组的末尾。
    • 哦,我忘了一件事,点(。)对于文件名来说太偏离了
    • 在正则表达式匹配之前,应确保文件名不等于...
    【解决方案3】:
    function clean(filename) {
    filename= filename.split(/[^a-zA-Z0-9\-\_\.]/gi).join('_');
    return filename;
    };
    
    filename=clean("Vis'it M'ic ro_pole!.pdf");
    

    【讨论】:

    • 感谢您的贡献。如果您可以编辑答案并在解决方案中添加简短说明,那就太好了。例如,与@molokoloco 提供的解决方案有什么区别?
    【解决方案4】:

    这是一个清理 Windows 文件/文件夹的正则表达式。它也适用于 POSIX(linux、mac),因为它的限制较少。

    function sanitizePath (path) {
      return path.replace(/[\\/:*?"<>|]/g, '')
    }
    console.log(sanitizePath('\\x/:a*b?<>|y'))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 2017-06-29
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      相关资源
      最近更新 更多