regex 上下驼峰式大小写

yh2wf1be  于 2023-05-08  发布在  其他
关注(0)|答案(3)|浏览(162)

我正试图提出一个正则表达式为上和下 Camel 的情况。
以下是我尝试的

(([A-Z][a-z0-9]*){2,}|([a-z][A-Z0-9]*){2,})

尝试将Upper camel case与此-([A-Z][a-z 0 -9]){2,}匹配,但它也匹配其他组合。类似的是第二部分的情况-([a-z][A-Z 0 -9]){2,})

oyjwcjzk

oyjwcjzk1#

这将匹配单词中至少包含一个大写字母的大写和小写字母短语。

上 Camel 箱

[A-Z][a-z0-9]*[A-Z0-9][a-z0-9]+[A-Za-z0-9]*

示例:HelloWorld,AQuickBrownFox

下 Camel 箱

[a-z]+[A-Z0-9][a-z0-9]+[A-Za-z0-9]*

例如:helloWorld,aQuickBrownFox

lhcgjxsq

lhcgjxsq2#

小写-不允许数字

^[a-z][a-z]*(([A-Z][a-z]+)*[A-Z]?|([a-z]+[A-Z])*|[A-Z])$

测试用例:https://regex101.com/library/4h7A1I

Camel 小写-允许数字

^[a-z][a-z0-9]*(([A-Z][a-z0-9]+)*[A-Z]?|([a-z0-9]+[A-Z])*|[A-Z])$

测试用例:https://regex101.com/library/8nQras

小写-允许数字-最多3个大写字母

匹配多个大写字母(例如deviceIDserialNOawsVPCdeviceSN),它会稍微涉及更多:

^[a-z][a-z0-9]*(([A-Z]{1,3}[a-z0-9]+)*[A-Z]{0,3}|([a-z0-9]+[A-Z]{1,3})*|[A-Z]{1,3})$

测试用例:https://regex101.com/library/C2eHyc

Pascal Case -不允许数字

^[A-Z](([a-z]+[A-Z]?)*)$

测试用例:https://regex101.com/library/sF2jRZ

Pascal Case -允许数字

^[A-Z](([a-z0-9]+[A-Z]?)*)$

测试用例:https://regex101.com/library/csrkQw

Pascal Case -允许数字-最多3个大写字母

匹配多个大写字母(例如DeviceIDSerialNoAwsVPCIOStreamStreamIODeviceSN),它会稍微涉及更多:

^[A-Z](([A-Z]{1,2}[a-z0-9]+)+([A-Z]{1,3}[a-z0-9]+)*[A-Z]{0,3}|([a-z0-9]+[A-Z]{0,3})*|[A-Z]{1,2})$

测试用例:https://regex101.com/library/TLTXbK
关于camel case和pascal case的更多细节,请查看repo

gudnpqoy

gudnpqoy3#

对于lowerCamelCase,您需要:
1.小写字母
1.至少一个(小写字母或大写字母或编号3r)
所以一个合适的正则表达式应该是

[a-z][a-zA-Z0-9]+

类似地,对于UpperCamelCase,您将有[A-Z][a-zA-Z0-9]+,如果将它们分组,则会得到

[a-zA-Z][a-zA-Z0-9]+

编辑:如果你严格要求一个单词是 Camel 大小写,它需要有一个“驼峰”,其中驼峰是大写字母或数字,你需要:
1.大写或小写字母,后跟
1.其他小写字母(可能没有),后面跟着
1.一个驼峰,接着是
1.其他小写字母(可能没有),
1.也许后面是另一个驼峰
那么你的正则表达式是:

[a-zA-Z][a-z]*([A-Z0-9]+[a-z]*)+

相关问题