0

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

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

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

Sample that should validate:
/whatever/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

4

3 回答 3

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

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

于 2015-09-17T13:39:24.530 回答
1

怎么样:

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

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

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

/^(?=(?:\/[^/]{1,255})+).{1,4095}$/i
于 2015-09-16T14:24:27.067 回答
0

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

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

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

于 2015-09-14T13:52:18.437 回答