Partager via


Syntaxe d'une expression régulière

Mise à jour : novembre 2007

Une expression régulière est un modèle de texte constitué de caractères ordinaires (par exemple les lettres de a à z) et de caractères spéciaux, appelés métacaractères. Le modèle décrit une ou plusieurs chaînes à mettre en correspondance lors d'une recherche effectuée sur un texte.

Exemples d'expressions régulières

Expression

Correspondance

/^\s*$/

Correspond à une ligne vide.

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

Valide un numéro d'ID composé de deux chiffres, d'un tiret et de cinq autres chiffres.

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

Correspond à une balise HTML.

Le tableau suivant contient la liste complète des métacaractères et de leur comportement dans le contexte des expressions régulières :

Caractère

Description

\

Marque le caractère suivant comme un caractère spécial, un littéral, une backreference ou une séquence d'échappement octale. Par exemple, « n » correspond au caractère « n ». « \n » correspond à un caractère de saut de ligne. La séquence « \\ » correspond à « \ » et « \( » correspond à « ( ».

^

Correspond à la position au début de la chaîne d'entrée. Si la propriété Multiline de l'objet RegExp est définie, ^ correspond également à la position qui suit « \n » ou « \r ».

$

Correspond à la position à la fin de la chaîne d'entrée. Si la propriété Multiline de l'objet RegExp est définie, $ correspond également à la position précédant « \n » ou « \r ».

*

Correspond zéro ou plusieurs fois au caractère ou à la sous-expression qui précède. Par exemple, zo* correspond à « z » et à « zoo ». * équivaut à {0,}.

+

Correspond une ou plusieurs fois au caractère ou à la sous-expression qui précède. Par exemple, « zo+ » correspond à « zo » et à « zoo », mais pas à « z ». + équivaut à {1,}.

?

Correspond zéro ou une fois au caractère ou à la sous-expression qui précède. Par exemple, « certain(es)? » correspond à « certain » dans « certain » ou « certaines ». ? équivaut à {0,1}.

{n}

n est un entier non négatif. Correspond exactement n fois. Par exemple, « o{2} » ne correspond pas au « o » de « Bob », mais correspond aux deux o de « zoo ».

{n,}

n est un entier non négatif. Correspond au moins n fois. Par exemple, « o{2} » ne correspond pas au « o » de « Bob », mais correspond à tous les o de « zooooo ». « o{1,} » équivaut à « o+ ». « o{0,} » équivaut à « o* ».

{n,m}

M et n sont des entiers non négatifs, où n <= m. Correspond au moins n fois et au plus m fois. Par exemple, « o{1,3} » correspond aux trois premiers o de « zoooooo ». « o{0,1} » équivaut à « o? ». Notez qu'il ne peut y avoir d'espace entre la virgule et les nombres.

?

Lorsque ce caractère suit immédiatement un des autres quantificateurs (*, +, ?, {n}, {n,}, {n,m}), le modèle de correspondance est dit « non gourmand ». Un modèle de correspondance non gourmand correspond à la plus petite partie possible de la chaîne recherchée tandis que le modèle de correspondance gourmand par défaut correspond à la plus grande partie possible de la chaîne recherchée. Ainsi, dans la chaîne « oooo », « o+? » correspond à un seul « o », tandis que « o+ » correspond à tous les « o ».

.

Correspond à n'importe quel caractère unique à l'exception de « \n ». Pour une correspondance à n'importe quel caractère, y compris « \n », utilisez une correspondance telle que [\s\S].

(modèle)

Une sous-expression qui correspond à modèle et capture la correspondance. La correspondance capturée peut être extraite de la collection des correspondances résultantes à l'aide des propriétés $0…$9. Pour une correspondance des parenthèses ( ), utilisez « \( » ou « \) ».

(?:modèle)

Une sous-expression qui correspond à modèle, mais ne capture pas la correspondance. En d'autres termes, il s'agit d'une correspondance sans capture qui n'est pas stockée pour une éventuelle utilisation ultérieure. Elle est utile lorsque vous souhaitez combiner des parties d'un modèle avec le caractère « ou » (|). Par exemple, « industri(?:e|alisation) » est une expression moins longue que « industrie|industrialisation ».

(?=modèle)

Une sous-expression qui effectue une recherche avancée positive, laquelle correspond à la chaîne à tout endroit marquant le début d'un modèle de correspondance de chaîne. Il s'agit d'une correspondance sans capture, c'est-à-dire que la correspondance n'est pas capturée pour une éventuelle utilisation ultérieure. Par exemple 'Windows (?=95|98|NT|2000)' correspond à « Windows » dans « Windows 2000 », mais pas à « Windows » dans « Windows 3.1 ». Les recherches avancées ne consomment pas de caractères. En effet, après identification d'une correspondance, la recherche de la correspondance suivante commence immédiatement après la dernière correspondance et non après les caractères qui faisaient partie de la recherche avancée.

(?!modèle)

Une sous-expression qui effectue une recherche avancée négative, laquelle fait correspondre la chaîne de recherche à tout endroit marquant le début d'un modèle qui ne correspond pas à la chaîne. Il s'agit d'une correspondance sans capture, c'est-à-dire que la correspondance n'est pas capturée pour une éventuelle utilisation ultérieure. Par exemple 'Windows (?!95|98|NT|2000)' correspond à « Windows » dans « Windows 3.1 », mais pas à « Windows » dans « Windows 2000 ». Les recherches avancées ne consomment pas de caractères. En effet, après identification d'une correspondance, la recherche de la correspondance suivante commence immédiatement après la dernière correspondance et non après les caractères qui faisaient partie de la recherche avancée.

x|y

Correspond à x ou y. Par exemple, 'z|food' correspond à « z » et à « food ». '(z|f)ood' correspond à « zood » ou à « food ».

[xyz]

Un jeu de caractères. Correspond à n'importe lequel des caractères placés entre crochets. Par exemple, [abc] correspond au « a » de « plaine ».

[^xyz]

Un jeu de caractères négatif. Représente n'importe quel caractère non compris dans les crochets. Par exemple, [^abc] correspond au « p » de « plaine ».

[a-z]

Une plage de caractères. Correspond à l'un des caractères de la plage spécifiée. Par exemple, [a-z] correspond à n'importe quel caractère alphabétique minuscule de la plage « a » à « z ».

[^a-z]

Une plage de caractères négative. Correspond à un caractère ne figurant pas dans la plage spécifiée. Par exemple, [^a-z] correspond à n'importe quel caractère qui ne fait partie de la plage « a » à « z ».

\b

Correspond à la limite d'un mot, c'est-à-dire à la position entre un mot et un espace. Par exemple, « er\b » correspond au « er » de « manger », mais pas au « er » de « mangera ».

\B

Correspond à une non-limite de mot. « er\B » correspond au « er » de « mangera », mais pas au « er » de « manger ».

\cx

Fait correspondre le caractère de contrôle indiqué par x. Par exemple, \cM fait correspondre un caractère Contrôle-M ou un retour chariot. La valeur de x doit faire partie de la plage A-Z ou a-z. Dans le cas contraire, c est considéré comme un caractère « c » littéral.

\d

Correspond à un caractère numérique. Équivalent à [0-9].

\D

Correspond à un caractère non numérique. Équivalent à [^0-9].

\f

Correspond à un caractère de saut de page. Équivalent à \x0c et à \cL.

\n

Correspond à un caractère de saut de ligne. Équivalent à \x0a et à \cJ.

\r

Correspond à un caractère de retour chariot Équivalent à \x0d et à \cM.

\s

Correspond à tout espace blanc, notamment un espace, une tabulation, un saut de page, etc. Équivalent à [ \f\n\r\t\v].

\S

Correspond à tout espace non blanc. Équivalent à [^ \f\n\r\t\v].

\t

Correspond à un caractère de tabulation. Équivalent à \x09 et à \cI.

\v

Correspond à un caractère de tabulation verticale. Équivalent à \x0b et à \cK.

\w

Correspond à tout caractère littéral y compris le trait de soulignement. Équivalent à [A-Za-z0-9_].

\W

Représente n'importe quel caractère non littéral Équivalent à [^A-Za-z0-9_].

\xn

Correspond à n, n étant une valeur d'échappement hexadécimale. Les valeurs d'échappement hexadécimales doivent comporter exactement deux chiffres. Par exemple, « \x41 » correspond à « A ». \x041 équivaut à « \x04 » & « 1 ». Permet aux codes ASCII d'être utilisés dans des expressions régulières.

\num

Correspond à num, num étant un entier positif. Une référence arrière aux correspondances capturées. Par exemple, (.)\1 correspond à deux caractères identiques consécutifs.

\n

Identifie une valeur d'échappement octale ou une backreference. Si \n est précédé d'au moins n sous-expressions capturées, n est une backreference. Sinon, n est une valeur d'échappement octale si n est un chiffre octal (0-7).

\nm

Identifie une valeur d'échappement octale ou une backreference. Si \nm est précédé d'au moins nm sous-expressions capturées, nm est une backreference. Si \nm est précédé d'au moins n captures, n est une backreference suivie du littéral m. Si aucune des conditions précédentes n'existe, \nm correspond à la valeur d'échappement octale nm lorsque n et m sont des chiffres octaux (0-7).

\nml

Correspond à la valeur d'échappement octale nml quand n est un chiffre octal (0-3) et m et l des chiffres octaux (0-7).

\un

Correspond à n, n étant un caractère Unicode exprimé sous la forme de quatre chiffres hexadécimaux. Par exemple, \u00A9 correspond au symbole de copyright (©).

Voir aussi

Autres ressources

Introduction aux expressions régulières