Espressione regolare per limitare il numero di caratteri a 10


189

Sto cercando di scrivere un'espressione regolare che consenta solo lettere minuscole e fino a 10 caratteri. Quello che ho finora assomiglia a questo:

pattern: /^[a-z]{0,10}+$/ 

Questo non funziona o non viene compilato. Ne avevo uno funzionante che avrebbe permesso solo lettere minuscole che era questo:

pattern: /^[a-z]+$/ 

Ma devo limitare il numero di caratteri a 10.


4
Il {} e il + fanno la stessa cosa (contando), quindi sono ridondanti, da cui l'errore.
PhiLho,

1
Dovresti eliminare '+' da / ^ [az] {0,10} + $ /. Dovrebbe essere / ^ [az] {0,10} $ /
SO Utente

1
Si noti che il pattern viene ^[a-z]{0,10}+$compilato in alcune lingue e alcuni di questi sono Java, Perl (5.10+), PHP, Ruby (1.9+). Vedi questa pagina per maggiori dettagli.
Jerry,

Vedi anche la soluzione universale tramite lookahead: Limitare la lunghezza del personaggio nell'espressione regolare
Vadzim

Risposte:


356

È possibile utilizzare le parentesi graffe per controllare il numero di occorrenze. Ad esempio, questo significa da 0 a 10:

/^[a-z]{0,10}$/

Le opzioni sono:

  • {3} Esattamente 3 occorrenze;
  • {6,} Almeno 6 occorrenze;
  • {2,5} da 2 a 5 ricorrenze.

Vedi il riferimento dell'espressione regolare .

La tua espressione aveva un + dopo la parentesi graffa di chiusura, quindi l'errore.


In Chrome Dev Tools con Ember ho dovuto omettere l'inizio ^della corrispondenza della proprietà SOLO richieste con un nome simile 1234o 5678, e ho dovuto includere il segno $
Devin G Rhode

11

/^[a-z]{0,10}$/dovrebbe funzionare. /^[a-z]{1,10}$/se vuoi abbinare almeno un personaggio, come /^[a-z]+$/fa.


9

Potrebbe essere utile aggiungere una corrispondenza avida alla fine della stringa, quindi puoi accettare stringhe> di 10 e il regex restituirà solo i primi 10 caratteri. /^[a-z0-9]{0,10}$?/


8

Dipende molto dal programma che stai usando. Programmi diversi ( Emacs , vi , sed e Perl ) usano espressioni regolari leggermente diverse. In questo caso, direi che nel primo modello, l'ultimo "+" dovrebbe essere rimosso.


7
grep '^[0-9]\{1,16\}' | wc -l

Fornisce i conteggi con il conteggio esatto delle partite con limite

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.