Ho un requisito che dice che un nome non deve iniziare con 3 lettere identiche che ignorano il loro caso. Un nome inizia con una lettera maiuscola seguita da lettere minuscole.Come abbinare qualsiasi lettera maiuscola seguita dalla lettera minuscola corrispondente?
Fondamentalmente ho potuto convertire l'intero nome in maiuscolo e quindi corrispondere con un'espressione regolare come (\p{Lu})\1{3,}.*
.
Ma mi chiedevo se esiste un'espressione regolare che soddisfa i requisiti precedenti e non richiede alcuna pre-elaborazione della stringa da abbinare. Quindi quale regex posso usare per abbinare stringhe come Aa
, Dd
o Uu
senza specificare esplicitamente alcuna combinazione possibile?
MODIFICA:
Ho accettato la risposta di Markos. Ho solo dovuto sistemarlo per lavorare con i nomi di lunghezza 1 e 2 e ancorarlo all'inizio. Quindi la regex effettiva per il mio caso d'uso è ^(\p{Lu})(\p{Ll}?$|(?=\p{Ll}{2})(?i)(?!(\1){2}))
.
Ho anche rivalutato le risposte di Evgeniy e sp00m per avermi aiutato a imparare una lezione sulle espressioni regolari.
Grazie per i vostri sforzi.
'(? I) (\ p {Lu}) \ 1 {2,}. *' Non lo farà, ma desidera indicare 2, come una lettera già abbinata. –