如何调整小驼峰camelCase正则表达式以支持中间包含大写首字母缩写
小驼峰正则适配连续大写缩写方案
调整后最终正则
^[a-z]+(?:[A-Z0-9]+[a-z0-9]*)*$
如果需要完全兼容原正则末尾允许单个大写字母的逻辑,也可以使用更贴合原规则的版本:
^[a-z]+((\d)|([A-Z0-9]+[a-z0-9]*))*([A-Z])?$
调整逻辑说明
原正则不支持中间连续大写的核心原因是:原规则要求每个大写开头的片段后面必须跟至少1个小写字母/数字,类似HTTP这种纯大写的缩写段没有匹配出口,因此会匹配失败。
调整后的规则保留了小驼峰的基础要求,同时放开了对连续大写片段的限制:
- 开头强制为1个及以上的小写字母,符合小驼峰命名的基础规范
- 后续片段支持两种合法格式:
- 纯大写/数字的缩写段,比如
HTTP、IPv6、IOS - 大写开头、后续跟小写/数字的普通驼峰段,比如
Request、Customer
- 纯大写/数字的缩写段,比如
- 完全兼容原正则覆盖的所有匹配场景,同时新增支持中间带连续大写缩写的命名格式
匹配测试验证
可以同时覆盖两类场景:
原正则已支持的场景
xmlHttpRequest newCustomerId innerStopwatch supportsIpv6OnIos youTubeImporter youtubeImporter affine3D
新增支持的连续大写场景
xmlHTTPRequest userIOSDevice payAPIConfig
内容的提问来源于stack exchange,提问作者HellishHeat
相关产品推荐
相关产品推荐

