相对文件路径最大大小和最大文件夹名称大小

时间:2015-09-14 13:50:39

标签: regex filepath ng-pattern ng-maxlength

对于大多数文件系统,Linux的最大文件名长度为255个字符,最大路径为4096个字符。如果foldername长于255,则无法创建。

/ ^ [a-z0-9 \ s _ @ - /。] + $ / i是一个很好的正则表达式(我在路径中也需要特殊字符),但我需要修改它,以便它限制字符串长度为4095,文件夹名称长度为255.

所以限制它是没有问题/^[a-z0-9\s_@-/.]{1-4095}$/i,但仍然无法解决最大文件夹名称大小问题。

应验证的样本:
/不管/ thisisnotapornstash / StillNot255CharactersButTheNextFolderIs / BPLrmwQRjm twIGEMDcgGk1BCRY6ZkKzsHoWqJNzGxCzlGTSZkfOei0QD2S3bGfqSMJMPxuvgHhUJotNgh3hGDYD01n5 6JiZy32JygaHHDLQbGWtkbFJy5BrMP5s6eL6V8Kcft71CxHZUMEEJ2LbYExYtPxaWuQ9USUCxbt7wTIjA LoLN6aHW0GovD5euXWsYuOsqvyGuzJqjaohM9FFNmMz7ul0R4HxzTWWQqCZ8hp6O2yipRTs5k4RmGCTLf NY /

到目前为止我想出了什么: data-ng-maxlength =“4095”(这解决了文件路径的最大长度) data-ng-pattern = / ^ [a-z0-9 \ s _@/.-](这是我应该在两个斜杠之间将最大字符数限制为255的位置。)

以下是我测试它的地方:https://regex101.com/r/kV7dL2/3

3 个答案:

答案 0 :(得分:1)

怎么样:

/^(?=(?:\/[a-z0-9s_@.-]{1,255})+).{1,4095}$/i

前瞻将目录长度限制为255个字符,然后我们测试总长度限制为4095个字符。

您可以使用更通用的正则表达式:

/^(?=(?:\/[^/]{1,255})+).{1,4095}$/i

答案 1 :(得分:1)

/^\/?(([0-9a-z]{0,255})||([0-9a-z]{1,255})?([0-9a-z]{1,255}\/)+)[0-9a-z]{1,255}\/?$/i

此正则表达式将测试路径中的所有文件夹名称是否长度介于1到255个字符之间。从路径的开头/结尾开始的正斜杠是可选的。

答案 2 :(得分:0)

您需要使用逗号分隔限制量词中的最小值和最大值(否则,{1-4095}字面上匹配字符序列{1-4095}):

/^[a-z0-9\s_@/.-]{1,4095}$/i

此外,连字符必须在末尾,以避免转义并匹配文字连字符。