Sei in: Home : Competenze : Applicazioni Web : Espressioni Regolari (Regular Expressions)

Espressioni Regolari (Regular Expressions)

Una espressione regolare, a volte chiamata anche regex o regexp, fornisce uno strumento conciso e flessibile per il matching di stringhe di testo, caratteri particolari, parole o pattern di caratteri. Un'espressione regolare è scritta in un linguaggio formale che può essere interpretato un programma che serve a esaminare il testo e identificare le parti che corrispondono alle specifiche fornite da un pattern.

PatternDescrizione
Escaping
\ Passa da caratteri speciali a letterali e viceversa.

Ad esempio: / \ (s \) / partite '(s)', mentre / (\ s) / corrisponde a qualsiasi spazio e corrisponde al match.
Quantificatori
{n}, {n,}, {n,m}, *, +, ? Quantificatori delle corrispondenze nella sottostringa che precede. la sottostringa può essere un singolo carattere, una sequenza di escape, un modello racchiuso tra parentesi o un set di caratteri.

n } corrisponde esattamente n volte.
n ,} corrisponde n o più volte.
n , m } corrisponde da n per m volte.
* è l'abbreviazione di {0,} . Corrisponde a zero o più volte.
+ è l'abbreviazione di {1,} . Corrisponde a una o più volte.
? è l'abbreviazione di {0,1} . Corrisponde a zero o una volta.

Delimitatori di pattern
(pattern), (?:pattern) Corrisponde all'intero modello contenuto.

pattern ) cattura match.
(:? pattern ) non cattura match

Ad esempio: / (d) /. \ 1 corrisponde a  'dad' in "abcdadef", mentre /(?:. d) {2} / , non corrisponde cattura 'CDAD'.

Nota: (:? pattern ) è una funzione JavaScript 1.5.
Lookaheads
(?=pattern), (?!pattern) Un lookahead partite solo se la sottoespressione precedente è seguito dal modello, ma il modello non è parte del match. La sottoespressione è la parte di espressione regolare che sarà abbinato.

(? = modello ) le partite solo se vi è un seguito pattern in ingresso.
(?! pattern ) corrisponde solo se non c'è un seguito pattern in ingresso.

Es.: 98) / Win (? = / partite 'Win' solo se 'Win' è seguita da '98 '.

Nota: lookahead è una caratteristica JavaScript1.5.
Alternativa
| Alternanativa a partire dai contenuti su entrambi i lati del carattere di alternanza.

Ad esempio: / (a | b) a / 'corrisponde a 'aa' in "dseaas" e 'ba' in "acbab".
Insiemi di caratteri
caratteri ] [^caratteri ] Corrisponde a uno qualsiasi dei caratteri contenuti. Un intervallo di caratteri può essere definito utilizzando un trattino.

caratteri ] corrisponde a qualsiasi dei contenuti caratteri .
[^ caratteri ] nega il set di caratteri contenuto in caratteri

Ad esempio: / [abcd] / corrisponde a uno dei caratteri 'a', 'b', 'c', 'd' e può essere abbreviata in/ [ad] / . Gli intervalli devono essere in ordine crescente, altrimenti si genererà un errore. (Es: / [da] / genererà un errore.)
/ [^ 0-9] / corrisponde a tutti i caratteri,  tranne le cifre.

Nota: La maggior parte dei caratteri speciali vengono automaticamente esclusi dal loro significato letterale nel set di caratteri.
Caratteri speciali
^ , $ , . , ? e tutti i caratteri sopra evidenziati nella tabella.

I caratteri speciali sono i caratteri che corrispondono a qualcosa di diverso.

^ inizio della stringa id input (o una nuova riga col flag m ).
$ fine della stringa di input (o di fine linea col flag m ).
. corrisponde a qualsiasi carattere eccetto un newline.
? direttamente a seguito di un quantificatore rende il quantificatore non avido (rende match minimo invece del massimo dell'intervallo definito).

Es.: /(.)*?/ corrisponde a nulla o '' in tutte le stringhe.

Caratteri letterali
Tutti i caratteri ad eccezione di quelli con un significato speciale. Mappato direttamente sul carattere corrispondente.

Ad esempio: / a / corrisponde 'a' in "Ogni antenato".
Backreferences
\n Backreferences sono riferimenti alla stessa cosa di un match precedentemente catturato. n è un numero intero positivo diverso da zero che dice al browser il match di riferimento.

/ (\ S) \ 1 (\ 1) + / g corrisponde a tutte le occorrenze di tre caratteri diversi da spazi uguali uno dopo l'altro.
/ <(\ S +).*>(.*)< \ / \ 1> / corrisponde a qualsiasi tag.

Ad esempio: / <(\ S +).*>(.*)< \ / \ 1> / corrisponde a  '<div id="me">text</div>' in "text<div id=\"me\">text</div>text".
Character Escapes
\f, \r, \n, \t, \v, \0, [\b], \s, \S, \w, \W, \d, \D, \b, \B, \cX, \xhh, \uhhhh \f corrisponde a form-feed\ R corrisponde a ritorno a capo.
\r corrisponde a di ritorno a capo.
\n tabulazione orizzontale.
\v tabulazione verticale partite.
\0 corrisponde a carattere NUL.
[\b] backspace.
\s corrisponde allo spazio bianco (abbreviazione di [\ f \ n \ r \ t \ v \ u00A0 \ u2028 \ u2029] ).
\S corrisponde a qualsiasi cosa, ma non uno spazio bianco (abbreviazione di [^ \ f \ n \ r \ t \ v \ u00A0 \ u2028 \ u2029] ).
\w corrisponde a qualunque carattere alfanumerico (caratteri della parola), compresa la sottolineatura (abbreviazione di [a-zA-Z0-9_] ).
\W corrisponde a qualsiasi parola non di caratteri (abbreviazione di [^ a-zA-Z0-9_] ).
\d corrisponde a qualsiasi cifra (abbreviazione di [0-9] ).
\D corrisponde a qualsiasi non-cifra (abbreviazione di [^ 0-9] ).
\b corrisponde a un confine di parola (la posizione tra una parola e uno spazio).
\B corrisponde a una non-confine di parola (abbreviazione di [^ \ b] ).
\cX corrisponde a un carattere di controllo. Ad esempio: \ centimetri partite CONTROL-M.
\xhh Corrisponde al carattere con due caratteri del codice esadecimale hh .
\uhhhh corrisponde al carattere Unicode con quattro caratteri del codice esadecimale hhhh .