📜  有效的文件名正则表达式 (1)

📅  最后修改于: 2023-12-03 15:40:17.969000             🧑  作者: Mango

有效的文件名正则表达式

在编写程序时,我们经常需要处理文件名。而处理文件名,就需要用到正则表达式。但是,不是所有的正则表达式都是有效的文件名正则表达式。本文将介绍如何编写有效的文件名正则表达式。

文件名字符集

文件名可以包含任意字符,但是为了跨平台的兼容性和易读性,通常只使用以下字符集:

  • 数字:0-9
  • 大小写字母:A-Za-z
  • 汉字:\u4e00-\u9fa5
  • 连字符:-
  • 下划线:_
  • 点号:.
文件名长度

文件名最长一般为255个字符,但是不同的操作系统和文件系统有所不同。因此,如果要编写有效的文件名正则表达式,需要考虑文件名长度的限制。

有效的文件名正则表达式

考虑了文件名字符集和长度,我们可以写出下面这个有效的文件名正则表达式:

/^[A-Za-z0-9\u4e00-\u9fa5-_\.]{1,255}$/u

该正则表达式可以匹配任意长度、任意字符集的文件名,包含大小写字母、数字、汉字、连字符、下划线和点号。而最大长度为255个字符。

代码实现

下面是一个 PHP 语言实现的示例:

$filename = "test_文件 1.txt";

if (preg_match('/^[A-Za-z0-9\u4e00-\u9fa5-_\.]{1,255}$/u', $filename)) {
    echo "Valid filename.";
} else {
    echo "Invalid filename.";
}
总结
  • 文件名最长一般为255个字符。
  • 文件名可以包含数字、大小写字母、汉字、连字符、下划线和点号等字符。
  • 为了编写有效的文件名正则表达式,需要考虑文件名字符集和长度限制。
  • /^[\w-.]{1,255}$/u 是经典的文件名正则表达式,但是不适用于某些特殊情况。
  • /^[A-Za-z0-9\u4e00-\u9fa5-_.]{1,255}$/u 是一种更加有效的文件名正则表达式,可以匹配大部分情况。