Верхний и нижний верблюжий чехол
Я пытаюсь придумать регулярное выражение для верхнего и нижнего верблюда.
Вот что я пробовал
(([A-Z][a-z0-9]*){2,}|([a-z][A-Z0-9]*){2,})
Попытка сопоставить случай с верхним верблюдом с этим - ([AZ] [a-z0-9] ) {2,}, но он также сопоставляет и другие комбинации. Похожий случай со второй частью - ([az] [A-Z0-9]) {2,})
3 ответа
Это будет соответствовать верхним и нижним фразам верблюжьего слова, содержащим в слове хотя бы один верхний регистр
Верхняя верблюжья сумка
[A-Z][a-z0-9]*[A-Z0-9][a-z0-9]+[A-Za-z0-9]*
пример:HelloWorld, AQuickBrownFox
Нижний верблюжий чехол
[a-z]+[A-Z0-9][a-z0-9]+[A-Za-z0-9]*
пример: helloWorld, aQuickBrownFox
Нижний верблюжий регистр — цифры не допускаются
^[a-z][a-z]*(([A-Z][a-z]+)*[A-Z]?|([a-z]+[A-Z])*|[A-Z])$
Тестовые случаи: https://regex101.com/library/4h7A1I
Нижний верблюжий регистр — разрешены цифры
^[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 прописных букв
Чтобы соответствовать более чем одной заглавной букве (например,deviceID
,serialNO
,awsVPC
,deviceSN
) он становится немного более сложным:
^[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 заглавных букв
Чтобы соответствовать более чем одной заглавной букве (например,DeviceID
,SerialNo
,AwsVPC
,IOStream
,StreamIO
,DeviceSN
) он становится немного более сложным:
^[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
Для получения более подробной информации о случаях верблюда и случая паскаля ознакомьтесь с этим репозиторием .
Для lowerCamelCase вам нужно:
- LowerCaseLetter
- хотя бы один (lowerCaseLetter или UpperCaseLetter или numb3r)
Таким образом, достойное выражение будет
[a-z][a-zA-Z0-9]+
Аналогично для UpperCamelCase, вы будете иметь [A-Z][a-zA-Z0-9]+
и, если вы сгруппируете их, вы получите
[a-zA-Z][a-zA-Z0-9]+
Изменить: Если вы строго требуете, чтобы слово было словом верблюжьего слова, оно должно иметь "горб", где горб это заглавная буква или число, вам нужно:
- Заглавная или строчная буква, за которой следует
- Другие строчные буквы (возможно, нет), за которыми следуют
- Горб, сопровождаемый
- Другие строчные буквы (возможно, нет),
- Может быть, последовал еще один горб
Тогда ваше регулярное выражение:
[a-zA-Z][a-z]*([A-Z0-9]+[a-z]*)+