Espressioni regolari per l'attributo pattern

Un' espressione regolare e' una stringa, definita pattern, che contiene al suo interno una serie di simboli.

Pubblicato da ,
Ultima modifica

In questo articolo vedremo come creare delle espressioni regolari per l'attributo "pattern" html5 al fine di definire la tipologia di caratteri da inserire nel campo input a cui è applicato.

Per definire un'espressione regolare si utilizzano i metacaratteri vediamone alcuni:

  • . che indica qualsiasi carattere ;
  • * indica che un carattere o un gruppo di caratteri puo' essere ripetuto zero o più volte;
  • ? indica che un carattere o un gruppo di caratteri può essere ripetuto zero o una sola volta;
  • {} le parentesi graffe indicano il numero esatto, o minimo, o massimo, o l’intervallo di volte cui un carattere o gruppo di caratteri può essere ripetuto;
  • + indica che un carattere o gruppo di caratteri può essere ripetuto una o più volte;
  • ^ indica l'inizio della stringa, oppure se inserito all'interno di un gruppo di caratteri ne indica la negazione;
  • $ indica la fine della stringa;
  • | che indica l’operatore OR (a|b|c si legge a oppure b oppure c);
  • \ escape per i caratteri speciali;
  • [] le parentesi quadre usate per contenere un carattere o gruppo di caratteri;
  • () le parentesi tonde usate per le sottostringhe;

Se ognuno di questi metacaratteri vogliono essere usati per il loro "valore letterale" devono essere preceduti da un un backslash ('\'), cioè per intenderci un punto interrogativo all'interno di una stringa potrebbe essere accettato con questa espressione "\? ".
Le parentesi quadre [] come abbiamo detto sono destinate a contenere "una classe di caratteri" ciò vuol dire che il campo di input affinchè sia valido deve contenere uno o più caratteri presenti nelle parentesi quadre. Vediamo aluci esempi:

  • ^[a-z]$ indica un intervallo di caratteri minuscoli che vanno dalla a alla z;
  • ^[abc]$ indica che il campo di input è valido se contiene una delle lettere presenti nelle parentesi quadre senza tener conto dell'ordine;
  • ^[0-9]$ indica un intervallo di numeri che vanno da 0 a 9;
  • ^[a-z0-9]$ indica che il campo è di tipo alfanumerico;
  • ^[a-z0-9\?]$ indica un campo alfanumerico che può contenere anche il punto interrogativo (da notare il backslash prima di ?);
  • ^[^a-z]$ indica che il campo non può contenere lettere minuscole ma solo maiuscole;
  • ^[a-z0-9\?]?$ indica che i caratteri contenuti nelle parentesi devono essere presenti zero oppure una volta;
  • ^[a-z0-9\?]*$ indica che i caratteri contenuti nelle parentesi devono essere presenti zero o più volte;
  • ^[a-z0-9]{3}$ indica che il campo può contenere esattamente 3 caratteri tra quelli presenti nelle parentesi quadre;
  • ^[a-z0-9]{3,}$ indica che il campo può contenere minimo 3 caratteri;
  • ^[a-z0-9]{,3}$ indica che il campo può contenere massimo 3 caratteri;

Le parentesi graffe {} come abbiamo detto contengono il numero di volte, più precisamente:

  • {4} indica che il campo deve contenere 4 caratteri;
  • {4,} indica che il campo può contenere minimo 4 caratteri;
  • {,4} indica che il campo può contenere massimo 4 caratteri;
  • {1,4} indica che il campo può contenere da 1 a 4 caratteri;

Le parentesi tonde () contengono una parte di stringa il cui valore deve essere assunto uguale a come è scritto, per intenderci "(abcd)" indica che il campo deve contenere "abcd" così come è scritto, a differenza di "[abcd]" con le parentesi quadre che indica che il campo deve contenere uno dei quattro caratteri. Come le parentesi quadre anche quelle tonde posso essere usate con i metacaratteri ad esempio "(ciao)?" indica che il campo può contenere la scritta "ciao" zero o una volta.

Per finire voglio ricordare che le espressioni regolari hanno delle abbreviazioni per consentire una più facile scrittura della stringa quando ci sono delle ripetizioni, eccone alcune:

  • \d equivale a [0-9];
  • \D equivale a [^0-9];
  • \w equivale a [0-9A-Za-z];
  • \W equivale a [^0-9A-Za-z];

 

Demo