如何调整Python图片文件名校验正则,实现长度、特殊字符、格式限制
图片文件名校验正则修正方案
需求确认
- 文件名总长度不超过20个字符
- 文件名不得包含
*、'、%、$、^、&、.、@、#、!、~等特殊字符 - 仅支持jpg、jpeg、png、gif、bmp、webp格式的图片
修正后正则
^(?![\s\S]{20})[^*'%$^&.@#!~]+\.(?:gif|png|jpe?g|bmp|webp)$
如果你的长度要求是「总长度最大为20」(含后缀部分),可以调整断言部分适配:
^(?![\s\S]{21})[^*'%$^&.@#!~]+\.(?:gif|png|jpe?g|bmp|webp)$
规则说明
^、$:分别匹配字符串的开始和结束位置,避免前后存在多余无效字符(?![\s\S]{20}):负向先行断言,字符串总长度达到20时直接校验失败,默认限制总长度≤19[^*'%$^&.@#!~]+:匹配除禁用特殊字符外的任意字符至少1次,确保文件名主体不含违规字符\.(?:gif|png|jpe?g|bmp|webp):匹配合法图片后缀,非捕获组不会生成额外匹配结果,性能更优
注:上述规则默认文件名主体不允许出现
.,仅后缀前保留唯一的.,完全符合你提出的特殊字符禁用要求。
内容的提问来源于stack exchange,提问作者GH00N
相关产品推荐
相关产品推荐

