2010-02-24 13 views
16

Come puoi determinare se una stringa è tutte maiuscole con un'espressione regolare. Può includere punteggiatura e numeri, solo lettere minuscole.Determina se la stringa è tutte maiuscole con espressione regolare

+1

probabilmente il miglior uso di una regex .... –

+3

@Mitch Puoi approfondire questo? Sembra un caso valido per regex per me. – Amarghosh

+0

E le linee vuote? Alcune delle risposte qui li respingono, ma è un caso limite interessante. – JXG

risposta

5

Perché non usare solo se (string.toUpperCase() == stringa)? ._. Il suo più "elegante" ...
penso che stai cercando di forzare in RegExp, ma come qualcun altro ha dichiarato, non credo che questo è il miglior uso delle espressioni regolari ...

+0

Come si usa, ad esempio, per estrarre tutte le linee soddisfacenti con un 'grep'? –

+0

string.toUpperCase() == stringa restituisce true per stringhe come '@ # $%' che possono o non possono essere ciò che stai cercando. – rvaldron

1

la stringa contiene una lettera minuscola se l'espressione /[a-z]/ restituisce true, quindi esegui semplicemente questo controllo, se è falso non hai lettere minuscole.

8

Che suona come si vuole: ^[^a-z]*$

+0

Questo corrisponderà solo a stringhe di esattamente un carattere di lunghezza. –

+0

@Tim: Oops. Grazie - risolto quello. –

1

più semplice sembrerebbe essere:

^[^a-z]*$ 
18
m/^[^a-z]*$/ 

Per i caratteri non inglesi,

m/^[^\p{Ll}]*$/ 
+1

+1 per una soluzione agnostica per la cultura. –

+1

Vale la pena notare, forse, che questo corrisponderà anche alle stringhe senza maiuscole e solo numeri, o solo punteggiatura o stringhe vuote ecc. – Totem

+0

@Totem è possibile controllare la regex oltre a 'm/[a -zA-z]/' per eliminare stringa vuota/solo numeri/solo punteggiatura ecc ... – OST

0

Come su (s == uppercase(s)) -> la stringa è tutto maiuscolo?

0
$str="ABCcDEF"; 
if (preg_match ("/[a-z]/",$str)){ 
    echo "Lowercase found\n"; 
} 
0

Se si desidera abbinare la stringa a un'altra espressione regolare dopo essersi assicurati che non vi siano lettere minuscole, è possibile utilizzare il lookahead positivo.

^(?=[^a-z]*$)MORE_REGEX$ 

Ad esempio, per fare in modo che il primo e l'ultimo carattere sono alfa-numerico:

^(?=[^a-z]*$)[A-Z0-9].*[A-Z0-9]$ 
non
Problemi correlati