[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Regular_expressions [Back]  [Original]

Expressions rationnelles - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

Expressions rationnelles

Une expression rationnelle (expression rationnelle pour faire court) permet aux dveloppeureuses de faire correspondre des chanes de caractres un modle, d'extraire des informations sur les sous-correspondances ou simplement de tester si la chane de caractres respecte ce modle. Les expressions rationnelles sont utilises dans de nombreux langages de programmation, et la syntaxe de JavaScript est inspire de Perl (angl.).

Vous tes encourages lire le guide des expressions rationnelles pour avoir un aperu des syntaxes d'expressions rationnelles disponibles et de leur fonctionnement.

Dans cet article

Description

Les expressions rationnelles (angl.) sont un concept important en thorie des langages formels. Elles permettent de dcrire un ensemble ventuellement infini de chanes de caractres (appel langage). Une expression rationnelle, en son cur, ncessite les fonctionnalits suivantes :

  • Un ensemble de caractres pouvant tre utiliss dans le langage, appel alphabet.
  • Concatnation : ab signifie  le caractre a suivi du caractre b .
  • Union : a|b signifie  soit a, soit b .
  • toile de Kleene : a* signifie  zro ou plusieurs caractres a .

En supposant un alphabet fini (comme les 26 lettres de l'alphabet anglais, ou l'ensemble des caractres Unicode), tous les langages rguliers peuvent tre gnrs par les fonctionnalits ci-dessus. Bien sr, de nombreux modles sont trs fastidieux exprimer de cette manire (comme  10 chiffres  ou  un caractre qui n'est pas un espace ), donc les expressions rationnelles JavaScript incluent de nombreux raccourcis, prsents ci-dessous.

Note : Les expressions rationnelles JavaScript ne sont en fait pas rgulires, en raison de l'existence des rtro-rfrences (les expressions rationnelles doivent avoir des tats finis). Cependant, elles restent une fonctionnalit trs utile.

Crer des expressions rationnelles

Une expression rationnelle est gnralement cre comme un littral en encadrant un motif avec des barres obliques (/) :

js
const regex1 = /ab+c/g;

Les expressions rationnelles peuvent galement tre cres avec le constructeur RegExp() :

js
const regex2 = new RegExp("ab+c", "g");

Elles n'ont pas de diffrences l'excution, bien qu'elles puissent avoir des implications sur les performances, la capacit d'analyse statique et l'ergonomie de l'criture avec l'chappement des caractres. Pour plus d'informations, voir la rfrence RegExp.

Indicateurs d'expressions rationnelles

Les indicateurs sont des paramtres spciaux qui peuvent modifier la faon dont une expression rationnelle est interprte ou la faon dont elle interagit avec le texte d'entre. Chaque indicateur correspond une proprit d'accs sur l'objet RegExp.

Indicateur Description Proprit correspondante
d Gnre des indices pour les correspondances de sous-chanes de caractres. hasIndices
g Recherche globale. global
i Recherche insensible la casse. ignoreCase
m Fait en sorte que ^ et $ correspondent au dbut et la fin de chaque ligne au lieu de ceux de l'ensemble de la chane de caractres. multiline
s Permet . de correspondre aux caractres de nouvelle ligne. dotAll
u  Unicode  ; traite un motif comme une squence de points de code Unicode. unicode
v Une amlioration du mode u avec plus de fonctionnalits Unicode. unicodeSets
y Effectue une recherche  collante  qui correspond partir de la position actuelle dans la chane de caractres cible. sticky

Les indicateurs i, m et s peuvent tre activs ou dsactivs pour des parties spcifiques d'une expression rationnelle en utilisant la syntaxe de modificateur.

Les sections ci-dessous rpertorient toutes les syntaxes d'expressions rationnelles disponibles, regroupes par leur nature syntaxique.

Assertions

Les assertions sont des constructions qui vrifient si la chane de caractres satisfait une certaine condition la position dfinie, sans consommer de caractres. Les assertions ne peuvent pas tre quantifies.

Assertion de limite de tampon : \A, \z, \Z

Assure que la position actuelle dans la chane de caractres se trouve strictement au dbut ou la fin de la chane de caractres entire (\Z autorise galement un retour la ligne en fin de chane de caractres), quelle que soit la prsence de l'indicateur m.

Assertion de limite d'entre : ^, $

Assure que la position actuelle est le dbut ou la fin de l'entre, ou le dbut ou la fin d'une ligne si l'indicateur m est activ.

Assertion anticipe : (?=...), (?!...)

Assure que la position actuelle est suivie ou non suivie par un certain motif.

Assertion de prcdence : (?<=...), (?<!...)

Assure que la position actuelle est prcde ou non prcde par un certain motif.

Assertion de limite de mot : \b, \B

Assure que la position actuelle est une limite de mot.

Atomes

Les atomes sont les units les plus lmentaires d'une expression rgulire. Chaque atome consomme un ou plusieurs caractres dans la chane de caractres, et choue soit la correspondance, soit permet au motif de continuer correspondre avec l'atome suivant.

Rtro-rfrence : \1, \2

Correspond un sous-motif prcdemment captur avec un groupe capturant.

Groupe capturant : (...)

Correspond un sous-motif et mmorise des informations sur la correspondance.

Classe de caractres : [...], [^...]

Correspond n'importe quel caractre faisant partie ou non d'un ensemble de caractres. Lorsque l'indicateur v est activ, il peut galement tre utilis pour correspondre des chanes de caractres de longueur finie.

Classes de caractres chapps : \d, \D, \w, \W, \s, \S

Correspond n'importe quel caractre faisant partie ou non d'un ensemble de caractres prdfini.

Squence de caractre chapp : \n, \u{...}

Correspond un caractre qui peut ne pas pouvoir tre reprsent de manire pratique sous sa forme littrale.

Caractre littral : a, b

Correspond un caractre spcifique.

Modificateur : (?ims-ims:...)

Remplace les paramtres d'indicateur dans une partie spcifique d'une expression rgulire.

Rtro-rfrence nomme : \k<name>

Correspond un sous-motif prcdemment captur avec un groupe capturant nomm.

Groupe capturant nomm : (?<name>...)

Correspond un sous-motif et mmorise des informations sur la correspondance. Le groupe peut ensuite tre identifi par un nom personnalis au lieu de son index dans le motif.

Groupe non capturant : (?:...)

Correspond un sous-motif sans mmoriser d'informations sur la correspondance.

Squence de classe de caractres Unicode chapp : \p{...}, \P{...}

Correspond un ensemble de caractres dfini par une proprit Unicode. Lorsque l'indicateur v est activ, il peut galement tre utilis pour correspondre des chanes de caractres de longueur finie.

Joker : .

Correspond tout caractre sauf les terminateurs de ligne, moins que l'indicateur s soit dfini.

Autres fonctionnalits

Ces fonctionnalits ne dfinissent aucun motif elles seules, mais servent composer des motifs.

Disjonction : |

Correspond l'une des alternatives spares par le caractre |.

Quantificateur : *, +, ?, {n}, {n,}, {n,m}

Correspond un atome un certain nombre de fois.

Squences d'chappement

Les squences d'chappement des expressions rationnelles dsignent toute syntaxe forme de \ suivi d'un ou plusieurs caractres. Elles peuvent avoir des fonctions trs diffrentes selon ce qui suit \. Voici la liste de toutes les  squences d'chappement  valides :

Squence d'chappement Suivie de Signification
\A Aucun Assertion de limite de tampon
\B Aucun Assertion ngative de limite de mot
\D Aucun Squence de classe de caractres chapp reprsentant les caractres non numriques
\P {, une proprit et/ou une valeur Unicode, puis } Squence de classe de caractres Unicode chapp reprsentant les caractres sans la proprit Unicode indique
\S Aucun Squence de classe de caractres chapp reprsentant les caractres qui ne sont pas des espaces
\W Aucun Squence de classe de caractres chapp reprsentant les caractres qui ne sont pas des caractres de mot
\Z Aucun Assertion de limite de tampon
\b Aucun Assertion de limite de mot ; dans les classes de caractres, reprsente U+0008 (RETOUR ARRIRE)
\c Une lettre de A Z ou de a z Une squence de caractre chapp reprsentant le caractre de contrle dont la valeur correspond celle de la lettre modulo 32
\d Aucun Squence de classe de caractres chapp reprsentant les chiffres (0 9)
\f Aucun Squence de caractre chapp reprsentant U+000C (SAUT DE PAGE)
\k <, un identifiant, puis > Une rtro-rfrence nomme
\n Aucun Squence de caractre chapp reprsentant U+000A (SAUT DE LIGNE)
\p {, une proprit et/ou une valeur Unicode, puis } Squence de classe de caractres Unicode chapp reprsentant les caractres associs la proprit Unicode indique
\q {, une chane de caractres, puis } Valide uniquement dans les classes de caractres du mode v ; reprsente littralement la chane de caractres reconnatre
\r Aucun Squence de caractre chapp reprsentant U+000D (RETOUR CHARIOT)
\s Aucun Squence de classe de caractres chapp reprsentant les caractres d'espacement
\t Aucun Squence de caractre chapp reprsentant U+0009 (TABULATION)
\u 4 chiffres hexadcimaux ; ou {, de 1 6 chiffres hexadcimaux, puis } Squence de caractre chapp reprsentant le caractre associ au point de code indiqu
\v Aucun Squence de caractre chapp reprsentant U+000B (TABULATION VERTICALE)
\w Aucun Squence de classe de caractres chapp reprsentant les caractres de mot (A Z, a z, 0 9, _)
\x 2 chiffres hexadcimaux Squence de caractre chapp reprsentant le caractre associ la valeur indique
\z Aucun Assertion de limite de tampon
\0 Aucun Squence de caractre chapp reprsentant U+0000 (NUL)

\ suivi de 0 et d'un autre chiffre forme une squence d'chappement octale historique, interdite en mode sensible l'Unicode. \ suivi de toute autre squence de chiffres forme une rtro-rfrence.

En outre, \ peut tre suivi de certains caractres qui ne sont ni des lettres ni des chiffres, auquel cas la squence d'chappement est toujours une squence de caractre chapp reprsentant le caractre chapp lui-mme :

Les autres caractres ASCII, savoir l'espace, ", ', _ et toute lettre non mentionne ci-dessus, ne constituent pas des squences d'chappement valides. En mode non sensible l'Unicode, les squences d'chappement qui ne figurent pas ci-dessus deviennent des chappements d'identit : elles reprsentent le caractre qui suit la barre oblique inverse. Par exemple, \a reprsente le caractre a. Ce comportement limite la possibilit d'introduire de nouvelles squences d'chappement sans provoquer de problmes de compatibilit ascendante, et interdit donc ces squences en mode sensible Unicode.

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# prod-RegularExpressionModifiers
ECMAScript 2027 LanguageSpecification
# prod-Atom
ECMAScript 2027 LanguageSpecification
# prod-CharacterClassEscape
ECMAScript 2027 LanguageSpecification
# prod-CharacterClass
ECMAScript 2027 LanguageSpecification
# prod-PatternCharacter
ECMAScript 2027 LanguageSpecification
# prod-Assertion
ECMAScript 2027 LanguageSpecification
# prod-RegExpUnicodeEscapeSequence
ECMAScript 2027 LanguageSpecification
# prod-Disjunction
ECMAScript 2027 LanguageSpecification
# prod-DecimalEscape
ECMAScript 2027 LanguageSpecification
# prod-CharacterEscape
ECMAScript 2027 LanguageSpecification
# prod-AtomEscape
ECMAScript 2027 LanguageSpecification
# sec-patterns-static-semantics-early-errors
ECMAScript 2027 LanguageSpecification
# prod-Quantifier
Regular Expression Buffer Boundaries for ECMAScript
# sec-patterns

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page