Sintassi delle espressioni regolari

Aggiornamento: novembre 2007

Un'espressione regolare rappresenta un criterio di testo costituito da caratteri ordinari, ad esempio le lettere dalla "a" alla "z", e da caratteri speciali, denominati metacaratteri. Il criterio descrive una o più stringhe di cui deve essere trovata una corrispondenza durante la ricerca all'interno del testo.

Esempi di espressioni regolari

Espressione

Corrispondenza

/^\s*$/

Corrisponde a una riga vuota.

/\d{2}-\d{5}/

Convalida un numero di ID costituito da 2 cifre, un trattino e altre 5 cifre.

/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/

Corrisponde a un tag HTML.

Nella tabella riportata di seguito viene fornito l'elenco completo dei metacaratteri e del relativo comportamento nel contesto delle espressioni regolari.

Carattere

Descrizione

\

Contrassegna il carattere successivo come carattere speciale, valore letterale, backreference o carattere di escape ottale. "n", ad esempio, corrisponde al carattere "n", mentre "\n" corrisponde a un carattere di nuova riga. La sequenza "\\" corrisponde a "\" e "\(" a "(".

^

Corrisponde alla posizione all'inizio della stringa di input. Se è stata impostata la proprietà Multiline dell'oggetto RegExp, ^ corrisponde inoltre alla posizione che segue "\n" o "\r".

$

Corrisponde alla posizione alla fine della stringa di input. Se è stata impostata la proprietà Multiline dell'oggetto RegExp, $ corrisponde inoltre alla posizione che precede "\n" o "\r".

*

Trova zero o più corrispondenze con la sottoespressione o il carattere precedente. "zo*", ad esempio, corrisponde a "z" e "zoo". * equivale a {0,}.

+

Trova una o più corrispondenze con la sottoespressione o il carattere precedente. "zo+", ad esempio, corrisponde a "zo" e "zoo", ma non a "z". + equivale a {1,}.

?

Trova zero o una corrispondenza con la sottoespressione o il carattere precedente. "do(es)?", ad esempio, corrisponde a "do" in "do" o a "does". ? equivale a {0,1}

{n}

n rappresenta un valore integer non negativo. Trova esattamente n corrispondenze. "o{2}", ad esempio, non corrisponde alla lettera "o" in "Bob", ma corrisponde alle due lettere "o" in "food".

{n,}

n rappresenta un valore integer non negativo. Trova almeno n corrispondenze. "o{2,}", ad esempio, non corrisponde alla lettera "o" in "Bob", mentre corrisponde a tutte le lettere "o" in "foooood". "o{1,}" equivale a "o+". "o{0,}" equivale a "o*".

{n,m}

M e n sono valori integer non negativi, in cui n <= m. Trova almeno n e al massimo m corrispondenze. "o{1,3}", ad esempio, corrisponde alle prime tre lettere "o" in "fooooood". "o{0,1}" equivale a "o?". Tra la virgola e i numeri non può essere inserito alcuno spazio.

?

Quando questo carattere si trova subito dopo uno degli altri quantificatori (*, +, ?, {n}, {n,}, {n,m}), il criterio di ricerca è specifico. Un criterio specifico trova il minor numero possibile di corrispondenze con la stringa con cui viene eseguita la ricerca, mentre il criterio generico predefinito trova il maggior numero possibile di corrispondenze con tale stringa. Nella stringa "oooo", ad esempio, "o+?" corrisponde a una singola lettera "o", mentre "o+" corrisponde a tutte le lettere "o".

.

Corrisponde a qualsiasi carattere singolo tranne "\n". Per ottenere una corrispondenza con qualsiasi carattere, incluso "\n", utilizzare un criterio come "[\s\S]".

(pattern)

Sottoespressione che corrisponde a criterio e che consente di acquisire la corrispondenza. La corrispondenza acquisita può essere recuperata dall'insieme Matches risultante mediante le proprietà $0…$9. Per ottenere una corrispondenza con i caratteri di parentesi ( ), utilizzare "\(" o "\)".

(?:pattern)

Sottoespressione che corrisponde a criterio, ma che non acquisisce la corrispondenza. Rappresenta quindi una corrispondenza di non acquisizione, che non viene memorizzata per un eventuale utilizzo successivo. Si rivela utile per combinare le parti di un criterio con un operatore "or" (|), ad esempio 'industr(?:y|ies) è un'espressione più breve rispetto a 'industry|industries'.

(?=pattern)

Sottoespressione che esegue una ricerca look-ahead positiva, con cui viene ottenuta una corrispondenza con la stringa in qualsiasi punto in cui inizia una stringa corrispondente a criterio. Rappresenta una corrispondenza di non acquisizione, che non viene quindi acquisita per un eventuale utilizzo successivo. Ad esempio, 'Windows (?=95|98|NT|2000)' corrisponde a "Windows" in "Windows 2000" ma non in "Windows 3.1". Le ricerche look-ahead non consumano caratteri. In altre parole, la ricerca della corrispondenza successiva inizia subito dopo l'ultima corrispondenza e non dopo i caratteri su cui è basata la ricerca look-ahead.

(?!pattern)

Sottoespressione che esegue una ricerca look-ahead negativa, con cui viene ottenuta una corrispondenza con la stringa di ricerca in qualsiasi punto in cui inizia una stringa non corrispondente a criterio. Rappresenta una corrispondenza di non acquisizione, che non viene quindi acquisita per un eventuale utilizzo successivo. Ad esempio, 'Windows (?=95|98|NT|2000)' corrisponde a "Windows" in "Windows 3.1" ma non in "Windows 2000". Le ricerche look-ahead non consumano caratteri. In altre parole, la ricerca della corrispondenza successiva inizia subito dopo l'ultima corrispondenza e non dopo i caratteri su cui è basata la ricerca look-ahead.

x|y

Corrisponde a x o a y. Ad esempio, 'z|food' corrisponde a "z" o "food". '(z|f)ood' corrisponde a "zood" o "food".

[xyz]

Set di caratteri. Corrisponde a qualsiasi carattere incluso. "[abc]", ad esempio, corrisponde alla lettera "a" in "plain".

[^xyz]

Set di caratteri negativo. Corrisponde a qualsiasi carattere non incluso. "[^abc]", ad esempio, corrisponde alla lettera "p" in "plain".

[a-z]

Intervallo di caratteri. Corrisponde a qualsiasi carattere compreso nell'intervallo specificato. "[a-z]", ad esempio, corrisponde a qualsiasi carattere alfabetico minuscolo compreso nell'intervallo tra "a" e "z".

[^a-z]

Intervallo di caratteri negativo. Corrisponde a qualsiasi carattere non compreso nell'intervallo specificato. "[^a-z]", ad esempio, corrisponde a qualsiasi carattere non compreso nell'intervallo tra "a" e "z".

\b

Corrisponde a un inizio o a una fine di parola, ovvero alla posizione tra una parola e uno spazio. "er\b", ad esempio, corrisponde a "er" in "never" ma non a "er" in "verb".

\B

Corrisponde a caratteri che non costituiscono un inizio o una fine di parola. "er\B" corrisponde a "er" in "verb" ma non a "er" in "never".

\cx

Corrisponde a un carattere di controllo indicato da x. \cM, ad esempio, corrisponde a un carattere di ritorno a capo o a un caratere "M" di controllo. Il valore di x deve essere compreso nell'intervallo tra "A" e "Z" o tra "a" e "z". In caso contrario, c verrà considerato come valore letterale del carattere "c".

\d

Corrisponde a una cifra. Equivale a [0-9].

\D

Corrisponde a un carattere diverso da una cifra. Equivale a [^0-9].

\f

Corrisponde a un carattere di avanzamento modulo. Equivale a \x0c e \cL.

\n

Corrisponde a un carattere di nuova riga. Equivale a \x0a e \cJ.

\r

Corrisponde a un carattere di ritorno a capo. Equivale a \x0d e \cM.

\s

Corrisponde a qualsiasi carattere di spazio vuoto, come spazio, tabulazione, avanzamento modulo e così via. Equivale a [ \f\n\r\t\v].

\S

Corrisponde a qualsiasi carattere diverso da uno spazio vuoto. Equivale a [^ \f\n\r\t\v].

\t

Corrisponde a un carattere di tabulazione. Equivale a \x09 e \cI.

\v

Corrisponde a un carattere di tabulazione verticale. Equivale a \x0b e \cK.

\w

Corrisponde a qualsiasi carattere alfanumerico, incluso il carattere di sottolineatura. Equivale a "[A-Za-z0-9_]".

\W

Corrisponde a qualsiasi carattere non alfabetico. Equivale a "[^A-Za-z0-9_]".

\xn

Corrisponde a n, dove n rappresenta un valore di escape esadecimale. I valori di escape esadecimali devono avere una lunghezza esatta di due cifre. "\x41", ad esempio, corrisponde ad "A". "\x041" equivale a "\x04" e "1". Consente l'utilizzo dei codici ASCII nelle espressioni regolari.

\num

Corrisponde a num, dove num rappresenta un valore integer positivo. Costituisce un riferimento alle corrispondenze acquisite. "(.)\1", ad esempio, corrisponde a due caratteri identici consecutivi.

\n

Identifica un valore di escape ottale o un backreference. Se \n è preceduto da almeno n sottoespressioni acquisite, n costituisce un backreference. Se n è una cifra ottale (0-7), rappresenta un valore di escape ottale.

\nm

Identifica un valore di escape ottale o un backreference. Se \nm è preceduto da almeno nm sottoespressioni acquisite, nm costituisce un backreference. Se \nm è preceduto da almeno n sottoespressioni acquisite, n costituisce un backreference seguito dal valore letterale m. Se non si verifica alcuna delle condizioni precedenti e n e m sono cifre ottali (0-7), \nm corrisponde al valore di escape ottale nm.

\nml

Se n è una cifra ottale (0-3) e m e l sono cifre ottali (0-7), corrisponde al valore di escape ottale nml.

\un

Corrisponde a n, dove n è un carattere Unicode espresso in quattro cifre esadecimali. \u00A9, ad esempio, corrisponde al simbolo di copyright (©).

Vedere anche

Altre risorse

Introduzione alle espressioni regolari