对于大多数文件系统,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
答案 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
此外,连字符必须在末尾,以避免转义并匹配文字连字符。