Regex che corrisponde Caso Camel e Pascal
-
21-09-2019 - |
Domanda
che sto per scrivere un parser per un linguaggio che dovrebbe avere regole sintattiche severe sulla denominazione dei tipi di variabili, e così via. Per esempio tutte le classi deve essere PascalCase, e tutte le variabili / nomi dei parametri e altri identificatori deve essere camelCase.
Per esempio HTMLParser
non è consentito e deve essere nominato HtmlParser
. Tutte le idee per un'espressione regolare che può abbinare qualcosa che è PascalCase, ma non ha due lettere maiuscole in esso?
Soluzione
camelCase:
^[a-z]+(?:[A-Z][a-z]+)*$
PascalCase:
^[A-Z][a-z]+(?:[A-Z][a-z]+)*$
Altri suggerimenti
/([A-Z][a-z]+)*[A-Z][a-z]*/
Ma devo dire che la scelta di denominazione puzza, HTMLParser dovrebbe essere consentito e preferito.
Non credo che gli elementi elencati può iniziare con i numeri (pensato che ho letto da qualche parte in modo da prendere con un grano di sale) in modo che il caso migliore sarebbe qualcosa di simile a Roger Pate di con alcune piccole modifiche (a mio parere)
/([A-Z][a-z0-9]+)*[A-Z][a-z0-9]*/
dovrebbe essere qualcosa di simile, per cercare una lettera maiuscola, quindi almeno un piccolo caso o un numero, o più, così come sembra che gestisce solo una lettera maiuscola come quella sembra essere richiesto, ma le lettere aggiuntive sono facoltativa.
In bocca al lupo
^[A-Z][a-z]*([A-Z][a-z]*)
Questo dovrebbe funzionare per:
- MadeEasy
- WonderFul
- andme
Questo tipo di schemi.