Écriture d'un masque d'expression rationnelle

  • Raccourci de la révision : JavaScript//Guide/Écriture_d'un_masque_d'expression_rationnelle
  • Titre de la révision : Écriture d'un masque d'expression rationnelle
  • ID de la révision : 260125
  • Créé :
  • Créateur : Pasqual
  • Version actuelle ? Non
  • Commentaire /* Utilisation de caractères spéciaux */ 'a' non 'r'

Contenu de la révision

Écriture d'un masque d'expression rationnelle

Un masque d'expression rationnelle est composé de caractères simples, comme par exemple /abc/, ou d'une combinaison de caractères simples et de caractères spéciaux, comme /ab*c/ ou /Chapitre (\d+)\.\d*/. Le dernier exemple comporte des parenthèses, qui sont utilisées comme des « cases mémoires ». La capture de cette partie du modèle est conservée pour un usage ultérieur, comme décrit dans Utilisation des parenthèses de capture.

Utilisation de masques simples

Les masques simples sont des assemblages de caractères pour lesquels une correspondance exacte est souhaitée. Par exemple, le modèle /mou/ correspond à des combinaisons de caractères dans des chaînes seulement quand les caractères « mou » apparaissent ensemble et dans cet ordre. Une telle correspondance est présente dans les chaines « Ce coussin est mou » et « Il faut promouvoir ce produit. » Dans les deux cas il y a capture de la sous-chaîne « mou ». Il n'y a pas de capture dans la chaîne « Loukoum oublié » car elle ne contient pas la sous-chaîne « mou ».

Utilisation de caractères spéciaux

Quand la recherche nécessite quelque chose de plus avancé qu'une correspondance exacte, comme trouver un ou plusieurs « b », ou trouver des espaces, le masque contient des caractères spéciaux. Par exemple, le masque /ab*c/ correspond à toute combinaison de caractères dans laquelle un seul « a » est suivi de zéro ou plus « b » (l'astérisque * signifie 0 ou plus occurences de l'objet précédent) immédiatement suivis d'un « c ». Dans le chaîne « cbbabbbbcdebc », le masque capture la sous-chaîne « abbbbc ».

Le tableau suivant fournit une liste complète des caractères spéciaux pouvant être utilisés dans des expressions rationnelles, ainsi que leur rôle.

Caractère Signification
\ Deux significations sont possibles :
  • Pour les caractères qui sont habituellement traités littéralement, indique que le prochain caractère est spécial et n'a pas à être interprété littéralement. Par exemple, /b/ correspond au caractère « b ». En plaçant un antislash devant b, ce qui donne /\b/ , le caractère devient un séparateur de mots.
  • Pour les caractères qui sont habituellement traités comme des caractères spéciaux, il indique que le prochain caractère n'est pas un caractère spécial et doit être interprété littéralement. Par exemple, * est un caractère spécial qui signifie que 0 ou plus d'occurences de l'objet précédent doivent apparaître ; par exemple, /a*/ signifie que 0 ou plus de « a ». Pour capturer le caractère * littéralement, faites-le précéder d'un antislash ; par exemple, /a\*/ capture « a* ».
^ Capture le début d'une chaîne. Si l'indicateur « multiligne » est activé, capture aussi la début d'une ligne, c.-à-d. juste après un caractère de retour chariot. Par exemple, /^U/ ne ne capture pas « U » dans "un U", mais capture le premier « U » dans "Un U".
$ Capture la fin d'une chaîne. Si l'indicateur « multiligne » est activé, capture aussi la fin d'une ligne, c.-à-d. juste avant un caractère de fin de ligne. Par exemple, /k$/ ne capture pas « k » dans "cracker", mais le capture dans "crack".
* Capture le caractère précédent répété 0 fois ou plus. Par exemple, /beu*/ capture « beuuuuuuuuuu » dans "Ces épinards sont beuuuuuuuuuurk" et « be » dans "Un belge", mais ne capture rien dans "Une blatte".
+ Capture le caractère précédent répété 1 ou plusieurs fois. Equivalent à {1,}. Par exemple, /a+/ capture la « a » dans "candide" et tous les « a » dans "caaaaaaandide".
? Capture le caractère précédent apparaissant 0 ou 1 fois.

Par exemple, /e?le?/ capture le « el » dans "carrousel" et le « le » dans "angle".

S'il est utilisé après un quantificateur *, +, ?, ou {}, il le rend « non-vorace » (capture un minimum de fois), contrairement à la configuration par défaut, qui est « vorace » (capture un maximum de fois). Oups ! vorace ? Si quelqu'un a une meilleure idée pour "greedy", corrigez Il est utilisé également dans les assertions rétroactives, décrites par x(?=y) et x(?!y) dans ce tableau.

. Le point capture tout caractère unique, excepté le retour chariot. Par exemple, /.n/ capture « an » et « on » dans "nay, an apple is on the tree", mais pas « nay ».NdT : trouver une phrase qui fonctionne en français avec "on" et "en" par exemple.
(x) Capture « x » et retient l'instance. Elles sont appelées « parenthèses capturantes ». Par exemple, /(foo)/ capture et instancie « foo » dans "foo bar". La sous-chaîne capturée peut être récupérée dans un tableau de résultats : {{mediawiki.external(1)}}, ..., {{mediawiki.external('n')}}.
(?:x) Capture « x » sans instance. Ce sont des parenthèses non-capturantes. La sous-chaîne capturée ne peut donc pas être récupérée.
x(?=y) Capture « x » seulement si « x » est suivi de « y ». Par exemple, /Jack(?=Sprat)/ capture « Jack » seulement si il est suivi de « Sprat ». /Jack(?=Sprat|Frost)/ capture « Jack » seulement si il est suivi de « Sprat » ou de « Frost ». Cependant, ni « Sprat » ni « Frost » ne sont capturés.
x(?!y) Capture « x » seulement si « x » n'est pas suivi de « y ». Par exemple, /\d+(?!\.)/ capture un nombre seulement s'il n'est pas suivi d'un point. L'expression rationnelle /\d+(?!\.)/.exec("3.141") capture 141 mais pas 3.141.
x|y Capture soit « x » soit « y ». Par exemple, /verte|rouge/ capture « verte » dans "pomme verte" et « rouge » dans "pomme rouge"
{n} Avec n entier positif, capture n occurences du caractère précédent. Par exemple, /a{2}/ ne capture pas la « a » de "candy", mais capture tous les « a » de "caandy" et les deux premiers dans "caaandy".
{n,} Avec n entier positif, capture au moins n occurences du caractère précédent. Par exemple, /a{2,} ne capture pas le « a » de "candy", mais capture tous les « a » de "caandy" et de "caaaaaaandy".
{n,m} Avec n et m deux entiers positifs, capture au moins n occurences et au plus m occurences du caractère précédent. Par exemple, /a{1,3}/ ne capture rien dans "cndy", le « a » de "candy", les deux premiers « a » de "caandy", et les trois premiers « a » de "caaaaaaandy". Remarquez que lors de la capture de "caaaaaaandy", seul "aaa" est capturé, même si la chaîne possède plus de « a ».
{{mediawiki.external('xyz')}} Jeu de caractères. Capture n'importe quel caractère contenu entre les crochets. Vous pouvez spécifier une gamme de caractères en utilisant un trait d'union. Par exemple, {{mediawiki.external('abcd')}} est identique à {{mediawiki.external('a-d')}}. Ils capturent le « b » de "basket" et le « c » de "hache".
{{mediawiki.external('^xyz')}} Anti-jeu de caractères. Il capture tous les caractères qui n'appartiennent pas à la liste des caractères présents entre les crochets. Vous pouvez spécifier une gamme de caractères en utilisant un trait d'union. Par exemple, {{mediawiki.external('^abc')}} est identique à {{mediawiki.external('^a-c')}}. Ils capturent 'a' dans "basket" et « h » dans "chope".
{{mediawiki.external('\\b')}} Capture une suppression arrière (à ne pas confondre avec \b.)
\b Capture un séparateur de mots, tel qu'un espace ou un retour chariot.(A ne pas cofondre avec {{mediawiki.external('\\b')}}.) Par exemple, /\bn\w/ capture le « no » de "noonday" ; /\wy\b/ capture le « ly » de "possibly yesterday".
\B Capture un non-séparateur de mots. Par exemple, /\w\Bn/ capture « on » dans "noonday", et /y\B\w/ capture « ye » dans "possibly yesterday".
\cX X étant un caractère de contrôle, capture un caractère de contrôle dans une chaîne. Par exemple, /\cM/ capture Ctrl-M dans une chaîne.
\d Capture un chiffre. equivalent à {{mediawiki.external('0-9')}}. Par exemple, /\d/ ou /{{mediawiki.external('0-9')}}/ capture « 2 » dans "B2 est le numéro de la chambre".
\D capture un caractère non-numérique. Equivalent à {{mediawiki.external('^0-9')}}. Par exemple, /\D/ ou /{{mediawiki.external('^0-9')}}/ capturent « B » dans "B2 est le numéro de la chambre".
\f Capture une fin de formulaire.
\n Capture une fin de ligne.
\r Capture un retour chariot.
\s Capture un blanc : soit une simple espace, soit une tabulation, soit une fin de ligne, soit une fin de formulaire. Equivalent à {{mediawiki.external(' \\f\\n\\r\\t\\v\\u00A0\\u2028\\u2029')}}. Par exemple, /\s\w*/ capture «  bar » dans "foo bar".
\S Capture un caractère qui n'est pas un blanc. Equivalent à

{{mediawiki.external('^ \\f\\n\\r\\t\\v\\u00A0\\u2028\\u2029')}}.

Par exemple, /\S\w*/ capture « foo » dans "foo bar".
\t Capture une tabulation.
\v Capture une tabulation verticale.
\w Capture un caractère alphanumérique, y compris les soulignés. Equivalent à {{mediawiki.external('A-Za-z0-9_')}}. Par exemple, /\w/ capture « p » dans "pomme", « 5 » dans "$5.28" et « 3 » dans "3D".
\W Capture un caractère non-alphanumérique.Équivalent à {{mediawiki.external('^A-Za-z0-9_')}}. Par exemple, /\W/ ou /{{mediawiki.external('^$A-Za-z0-9_')}}/ capturent « % » dans "50%".
\n Quand n est un entier positif, une référence arrière à la dernière sous-chaîne capturant la nième parenthèse de l'expression rationnelle (y compris les parenthèses gauches). Par exemple, /pomme(,)\sorange\1/ capture « pomme, orange, » dans "pomme, orange, cerise, pêche."
\0 Capture le caractère nul. Ne le faites pas suivre pas un autre chiffre.
\xhh Capture le caractère dont le code hexadécimal est hh. (Simple)
\uhhhh Capture le caractère dont le code hexadécimal est hhhh. (Double).

Table 4.1: Caractères spéciaux des expressions rationnelles.

Utilisation des parenthèses

L'ajout de parenthèses autour d'une partie d'un masque d'expression rationnelle fait que la sous-chaîne capturée entre parenthèses est conservée en mémoire. Une fois conservée, la sous-chaîne peut être récupérée pour être réutilisée, comme décrit dans Utilisation des parenthèses de capture.

Par exemple, le masque /Chapitre (\d+)\.\d*/ illustre l'utilisation de caractères spéciaux et indique qu'une partie du masque doit être conservée en mémoire. Il capture exactement les caractères « Chapitre  » suivis d'un ou plusieurs chiffres (\d signifie chiffre et + signifie 1 ou plusieurs fois), suivis d'un point (qui est un caractère spécial, c'est pourquoi on le fait précéder d'un caractère d'échappement afin qu'il ne soit pas interprété comme un caractère spécial), suivi de chiffres absents ou présents une ou plusieurs fois (\d signifie chiffre, * signifie 0 ou plus de fois). De plus, les parenthèses sont utilisées afin de conserver la première partie numérique.

Ce masque capture "Ouvrez le Chapitre 4.3, paragraphe 6", et conserve le « 4 ». Il ne capture pas "Chapitre 3 et 4", car le « 3 » n'est pas suivi d'un point.

Pour capturer une sous-chaîne sans qu'elle soit conservée en mémoire, faites précéder le masque à l'intérieur des parenthèses de ?:. Par exemple,(?:\d+) capture un ou plusieurs chiffres mais ne les conserve pas en mémoire.

{{wiki.template('PrécédentSuivant', [ "Guide JavaScript 1.5:Création d\'une expression rationnelle", "Guide JavaScript 1.5:Travailler avec les expressions rationnelles" ])}}

{{ wiki.languages( { "en": "en/Core_JavaScript_1.5_Guide/Writing_a_Regular_Expression_Pattern", "ja": "ja/Core_JavaScript_1.5_Guide/Writing_a_Regular_Expression_Pattern" } ) }}

Source de la révision

<p>
</p>
<h3 name=".C3.89criture_d.27un_masque_d.27expression_rationnelle"> Écriture d'un masque d'expression rationnelle </h3>
<p>Un masque d'expression rationnelle est composé de caractères simples, comme par exemple <code>/abc/</code>, ou d'une combinaison de caractères simples et de caractères spéciaux, comme <code>/ab*c/</code> ou <code>/Chapitre (\d+)\.\d*/</code>. Le dernier exemple comporte des parenthèses, qui sont utilisées comme des « cases mémoires ». La capture de cette partie du modèle est conservée pour un usage ultérieur, comme décrit dans <a href="fr/Guide_JavaScript_1.5/Travailler_avec_les_expressions_rationnelles/Utilisation_des_parenth%c3%a8ses_de_capture">Utilisation des parenthèses de capture</a>.
</p>
<h4 name="Utilisation_de_masques_simples"> Utilisation de masques simples </h4>
<p>Les masques simples sont des assemblages de caractères pour lesquels une correspondance exacte est souhaitée. Par exemple, le modèle <code>/mou/</code> correspond à des combinaisons de caractères dans des chaînes seulement quand les caractères « mou » apparaissent ensemble et dans cet ordre. Une telle correspondance est présente dans les chaines « Ce coussin est mou » et « Il faut promouvoir ce produit. » Dans les deux cas il y a capture de la sous-chaîne « mou ». Il n'y a pas de capture dans la chaîne « Loukoum oublié » car elle ne contient pas la sous-chaîne « mou ».
</p>
<h4 name="Utilisation_de_caract.C3.A8res_sp.C3.A9ciaux"> Utilisation de caractères spéciaux </h4>
<p>Quand la recherche nécessite quelque chose de plus avancé qu'une correspondance exacte, comme trouver un ou plusieurs « b », ou trouver des espaces, le masque contient des caractères spéciaux. Par exemple, le masque <code>/ab*c/</code> correspond à toute combinaison de caractères dans laquelle un seul « a » est suivi de zéro ou plus « b » (l'astérisque <code>*</code> signifie 0 ou plus occurences de l'objet précédent) immédiatement suivis d'un « c ». Dans le chaîne « cbbabbbbcdebc », le masque capture la sous-chaîne « abbbbc ».
</p><p>Le tableau suivant fournit une liste complète des caractères spéciaux pouvant être utilisés dans des expressions rationnelles, ainsi que leur rôle.
</p>
<table class="fullwidth-table">
<tbody><tr>
<th>Caractère</th>
<th>Signification</th>
</tr>
<tr>
<td><code>\</code></td>
<td>Deux significations sont possibles :
<ul><li> Pour les caractères qui sont habituellement traités littéralement, indique que le prochain caractère est spécial et n'a pas à être interprété littéralement. Par exemple, <code>/b/ </code> correspond au caractère « b ». En plaçant un antislash devant b, ce qui donne <code>/\b/ </code>, le caractère devient un séparateur de mots.
</li><li> Pour les caractères qui sont habituellement traités comme des caractères spéciaux, il indique que le prochain caractère n'est pas un caractère spécial et doit être interprété littéralement. Par exemple, <code>*</code> est un caractère spécial qui signifie que 0 ou plus d'occurences de l'objet précédent doivent apparaître ; par exemple, <code>/a*/</code> signifie que 0 ou plus de « a ». Pour capturer le caractère * littéralement, faites-le précéder d'un antislash ; par exemple, <code>/a\*/</code> capture « a* ».
</li></ul>
</td>
</tr>
<tr>
<td><code>^</code></td>
<td>Capture le début d'une chaîne. Si l'indicateur « multiligne » est activé, capture aussi la début d'une ligne, c.-à-d. juste après un caractère de retour chariot.
Par exemple, <code>/^U/</code> ne ne capture pas « U » dans <code>"un U"</code>, mais capture le premier « U » dans <code>"Un U"</code>.</td>
</tr>
<tr>
<td><code>$</code></td>
<td>Capture la fin d'une chaîne. Si l'indicateur « multiligne » est activé, capture aussi la fin d'une ligne, c.-à-d. juste avant un caractère de fin de ligne.
Par exemple, <code>/k$/</code> ne capture pas « k » dans <code>"cracker"</code>, mais le capture dans <code>"crack"</code>.  </td>
</tr>
<tr>
<td><code>*</code></td>
<td>Capture le caractère précédent répété 0 fois ou plus.
Par exemple, <code>/beu*/</code> capture « beuuuuuuuuuu » dans <code>"Ces épinards sont beuuuuuuuuuurk"</code> et « be » dans <code>"Un belge"</code>, mais ne capture rien dans <code>"Une blatte"</code>.</td>
</tr>
<tr>
<td><code>+</code></td>
<td>Capture le caractère précédent répété 1 ou plusieurs fois. Equivalent à <code>{1,}</code>.
Par exemple, <code>/a+/</code> capture la « a » dans <code>"candide"</code> et tous les « a » dans <code>"caaaaaaandide"</code>.</td>
</tr>
<tr>
<td><code>?</code></td>
<td>Capture le caractère précédent apparaissant 0 ou 1 fois.
<p>Par exemple, <code>/e?le?/</code> capture le « el » dans <code>"carrousel"</code> et le « le » dans <code>"angle"</code>.
</p><p>S'il est utilisé après un quantificateur <code>*</code>, <code>+</code>, <code>?</code>, ou <code>{}</code>, il le rend « non-vorace » (capture un minimum de fois), contrairement à la configuration par défaut, qui est « vorace » (capture un maximum de fois).
<span class="comment">Oups ! vorace ? Si quelqu'un a une meilleure idée pour "greedy", corrigez</span>
Il est utilisé également dans les assertions rétroactives, décrites par <code>x(?=y)</code> et <code>x(?!y)</code> dans ce tableau.
</p>
</td>
</tr>
<tr>
<td><code>.</code></td>
<td>Le point capture tout caractère unique, excepté le retour chariot.
Par exemple, <code>/.n/</code> capture « an » et « on » dans <code>"nay, an apple is on the tree"</code>, mais pas « nay ».<span class="comment">NdT : trouver une phrase qui fonctionne en français avec "on" et "en" par exemple.</span>  </td>
</tr>
<tr>
<td><code>(x)</code></td>
<td>Capture « x » et retient l'instance. Elles sont appelées « parenthèses capturantes ».
Par exemple, <code>/(foo)/</code> capture et instancie « foo » dans <code>"foo bar"</code>. La sous-chaîne capturée peut être récupérée dans un tableau de résultats : <code>{{mediawiki.external(1)}}, ..., {{mediawiki.external('n')}}</code>.  </td>
</tr>
<tr>
<td><code>(?:x)</code></td>
<td>Capture « x » sans instance. Ce sont des parenthèses non-capturantes. La sous-chaîne capturée ne peut donc pas être récupérée.  </td>
</tr>
<tr>
<td><code>x(?=y)</code></td>
<td>Capture « x » seulement si « x » est suivi de « y ». Par exemple, <code>/Jack(?=Sprat)/</code> capture « Jack » seulement si il est suivi de « Sprat ». <code>/Jack(?=Sprat|Frost)/</code> capture « Jack » seulement si il est suivi de « Sprat » ou de « Frost ». Cependant, ni « Sprat » ni « Frost » ne sont capturés.  </td>
</tr>
<tr>
<td><code>x(?!y)</code></td>
<td>Capture « x » seulement si « x » n'est pas suivi de « y ». Par exemple, <code>/\d+(?!\.)/</code> capture un nombre seulement s'il n'est pas suivi d'un point. L'expression rationnelle <code>/\d+(?!\.)/.exec("3.141")</code> capture <code>141</code> mais pas <code>3.141</code>.  </td>
</tr>
<tr>
<td><code>x|y</code></td>
<td>Capture soit « x » soit « y ».
Par exemple, <code>/verte|rouge/</code> capture « verte » dans <code>"pomme verte"</code> et « rouge » dans <code>"pomme rouge"</code>  </td>
</tr>
<tr>
<td><code>{n}</code></td>
<td>Avec <code>n</code> entier positif, capture n occurences du caractère précédent.
Par exemple, <code>/a{2}/</code> ne capture pas la « a » de <code>"candy"</code>, mais capture tous les « a » de <code>"caandy"</code> et les deux premiers dans <code>"caaandy"</code>.  </td>
</tr>
<tr>
<td><code>{n,}</code></td>
<td>Avec <code>n</code> entier positif, capture au moins n occurences du caractère précédent.
Par exemple, <code>/a{2,}</code> ne capture pas le « a » de <code>"candy"</code>, mais capture tous les « a » de <code>"caandy"</code> et de <code>"caaaaaaandy"</code>.  </td>
</tr>
<tr>
<td><code>{n,m}</code></td>
<td>Avec <code>n</code> et <code>m</code> deux entiers positifs, capture au moins n occurences et au plus m occurences du caractère précédent.
Par exemple, <code>/a{1,3}/</code> ne capture rien dans <code>"cndy"</code>, le « a » de <code>"candy"</code>, les deux premiers « a » de <code>"caandy"</code>, et les trois premiers « a » de <code>"caaaaaaandy"</code>. Remarquez que lors de la capture de <code>"caaaaaaandy"</code>, seul <code>"aaa"</code> est capturé, même si la chaîne possède plus de « a ».  </td>
</tr>
<tr>
<td><code>{{mediawiki.external('xyz')}}</code></td>
<td>Jeu de caractères. Capture n'importe quel caractère contenu entre les crochets. Vous pouvez spécifier une gamme de caractères en utilisant un trait d'union.
Par exemple, <code>{{mediawiki.external('abcd')}}</code> est identique à <code>{{mediawiki.external('a-d')}}</code>. Ils capturent le « b » de <code>"basket"</code> et le « c » de <code>"hache"</code>.  </td>
</tr>
<tr>
<td><code>{{mediawiki.external('^xyz')}}</code></td>
<td>Anti-jeu de caractères. Il capture tous les caractères qui n'appartiennent pas à la liste des caractères présents entre les crochets. Vous pouvez spécifier une gamme de caractères en utilisant un trait d'union.
Par exemple, <code>{{mediawiki.external('^abc')}}</code> est identique à <code>{{mediawiki.external('^a-c')}}</code>. Ils capturent 'a' dans <code>"basket"</code> et « h » dans <code>"chope"</code>.  </td>
</tr>
<tr>
<td><code>{{mediawiki.external('\\b')}}</code></td>
<td>Capture une suppression arrière (à ne pas confondre avec  <code>\b</code>.)  </td>
</tr>
<tr>
<td><code>\b</code></td>
<td>Capture un séparateur de mots, tel qu'un espace ou un retour chariot.(A ne pas cofondre avec {{mediawiki.external('\\b')}}.)
Par exemple, <code>/\bn\w/</code> capture le « no » de <code>"noonday"</code> ; <code>/\wy\b/</code> capture le « ly » de <code>"possibly yesterday"</code>.  </td>
</tr>
<tr>
<td><code>\B</code></td>
<td>Capture un non-séparateur de mots.
Par exemple, <code>/\w\Bn/</code> capture « on » dans <code>"noonday"</code>, et <code>/y\B\w/</code> capture « ye » dans <code>"possibly yesterday"</code>.  </td>
</tr>
<tr>
<td><code>\cX</code></td>
<td><code>X</code> étant un caractère de contrôle, capture un caractère de contrôle dans une chaîne.
Par exemple, <code>/\cM/</code> capture <code>Ctrl-M</code> dans une chaîne.  </td>
</tr>
<tr>
<td><code>\d</code></td>
<td>Capture un chiffre. equivalent à <code>{{mediawiki.external('0-9')}}</code>.
Par exemple, <code>/\d/</code> ou <code>/{{mediawiki.external('0-9')}}/</code> capture « 2 » dans <code>"B2 est le numéro de la chambre"</code>.  </td>
</tr>
<tr>
<td><code>\D</code></td>
<td>capture un caractère non-numérique. Equivalent à <code>{{mediawiki.external('^0-9')}}</code>.
Par exemple, <code>/\D/</code> ou <code>/{{mediawiki.external('^0-9')}}/</code> capturent « B » dans <code>"B2 est le numéro de la chambre"</code>.  </td>
</tr>
<tr>
<td><code>\f</code></td>
<td>Capture une fin de formulaire.  </td>
</tr>
<tr>
<td><code>\n</code></td>
<td>Capture une fin de ligne.  </td>
</tr>
<tr>
<td><code>\r</code></td>
<td>Capture un retour chariot.  </td>
</tr>
<tr>
<td><code>\s</code></td>
<td>Capture un blanc : soit une simple espace, soit une tabulation, soit une fin de ligne, soit une fin de formulaire. Equivalent à <code>{{mediawiki.external(' \\f\\n\\r\\t\\v\\u00A0\\u2028\\u2029')}}</code>.
Par exemple, <code>/\s\w*/</code> capture «  bar » dans <code>"foo bar"</code>.  </td>
</tr>
<tr>
<td><code>\S</code></td>
<td>Capture un caractère qui n'est pas un blanc. Equivalent à
<p><code>{{mediawiki.external('^ \\f\\n\\r\\t\\v\\u00A0\\u2028\\u2029')}}</code>.
</p>
Par exemple, <code>/\S\w*/</code> capture « foo » dans <code>"foo bar"</code>.  </td>
</tr>
<tr>
<td><code>\t</code></td>
<td>Capture une tabulation.  </td>
</tr>
<tr>
<td><code>\v</code></td>
<td>Capture une tabulation verticale.  </td>
</tr>
<tr>
<td><code>\w</code></td>
<td>Capture un caractère alphanumérique, y compris les soulignés. Equivalent à <code>{{mediawiki.external('A-Za-z0-9_')}}</code>.
Par exemple, <code>/\w/</code> capture « p » dans <code>"pomme"</code>, « 5 » dans <code>"$5.28"</code> et « 3 » dans <code>"3D"</code>.  </td>
</tr>
<tr>
<td><code>\W</code></td>
<td>Capture un caractère non-alphanumérique.Équivalent à <code>{{mediawiki.external('^A-Za-z0-9_')}}</code>.
Par exemple, <code>/\W/</code> ou <code>/{{mediawiki.external('^$A-Za-z0-9_')}}/</code> capturent « % » dans <code>"50%"</code>.  </td>
</tr>
<tr>
<td><code>\<i>n</i></code></td>
<td>Quand n est un entier positif, une référence arrière à la dernière sous-chaîne capturant la n<sup>ième</sup> parenthèse de l'expression rationnelle (y compris les parenthèses gauches).
Par exemple, <code>/pomme(,)\sorange\1/</code> capture « pomme, orange, » dans <code>"pomme, orange, cerise, pêche."</code>  </td>
</tr>
<tr>
<td><code>\0</code></td>
<td>Capture le caractère nul. Ne le faites pas suivre pas un autre chiffre.  </td>
</tr>
<tr>
<td><code>\x<i>hh</i></code></td>
<td>Capture le caractère dont le code hexadécimal est <code>hh</code>. (Simple)</td>
</tr>
<tr>
<td><code>\u<i>hhhh</i></code></td>
<td>Capture le caractère dont le code hexadécimal est <code>hhhh</code>. (Double).   </td>
</tr>
</tbody></table>
<p><small><b>Table 4.1: Caractères spéciaux des expressions rationnelles.</b></small>
</p>
<h4 name="Utilisation_des_parenth.C3.A8ses"> Utilisation des parenthèses </h4>
<p>L'ajout de parenthèses autour d'une partie d'un masque d'expression rationnelle fait que la sous-chaîne capturée entre parenthèses est conservée en mémoire. Une fois conservée, la sous-chaîne peut être récupérée pour être réutilisée, comme décrit dans
<a href="fr/Guide_JavaScript_1.5/Travailler_avec_les_expressions_rationnelles/Utilisation_des_parenth%c3%a8ses_de_capture">Utilisation des parenthèses de capture</a>.
</p><p>Par exemple, le masque <code>/Chapitre (\d+)\.\d*/</code> illustre l'utilisation de caractères spéciaux et indique qu'une partie du masque doit être conservée en mémoire. Il capture exactement les caractères « Chapitre  » suivis d'un ou plusieurs chiffres (<code>\d</code> signifie chiffre et <code>+</code> signifie 1 ou plusieurs fois), suivis d'un point (qui est un caractère spécial, c'est pourquoi on le fait précéder d'un caractère d'échappement afin qu'il ne soit pas interprété comme un caractère spécial), suivi de chiffres absents ou présents une ou plusieurs fois (<code>\d</code> signifie chiffre, <code>*</code> signifie 0 ou plus de fois). De plus, les parenthèses sont utilisées afin de conserver la première partie numérique.
</p><p>Ce masque capture <code>"Ouvrez le Chapitre 4.3, paragraphe 6"</code>, et conserve le « 4 ». Il ne capture pas <code>"Chapitre 3 et 4"</code>, car le « 3 » n'est pas suivi d'un point.
</p><p>Pour capturer une sous-chaîne sans qu'elle soit conservée en mémoire, faites précéder le masque à l'intérieur des parenthèses de <code>?:</code>. Par exemple,<code>(?:\d+)</code> capture un ou plusieurs chiffres mais ne les conserve pas en mémoire.
</p><p>{{wiki.template('PrécédentSuivant', [ "Guide JavaScript 1.5:Création d\'une expression rationnelle", "Guide JavaScript 1.5:Travailler avec les expressions rationnelles" ])}}
</p>{{ wiki.languages( { "en": "en/Core_JavaScript_1.5_Guide/Writing_a_Regular_Expression_Pattern", "ja": "ja/Core_JavaScript_1.5_Guide/Writing_a_Regular_Expression_Pattern" } ) }}
Revenir à cette révision