Travailler avec les expressions rationnelles

  • Raccourci de la révision : JavaScript//Guide/Travailler_avec_les_expressions_rationnelles
  • Titre de la révision : Travailler avec les expressions rationnelles
  • ID de la révision : 190073
  • Créé :
  • Créateur : Cariboo
  • Version actuelle ? Non
  • Commentaire /* Travailler avec les expressions rationnelles */

Contenu de la révision

Travailler avec les expressions rationnelles

Les expressions rationnelles sont utilisées avec les méthodes test et exec de RegExp, et avec les méthodes match, replace, search et split de String. Ces méthodes sont expliquées en détail dans le JavaScript Reference|Core JavaScript Reference.

Méthode Description
] Une méthode de RegExp qui effectue une recherche de correspondance dans une chaîne. Elle retourne un tableau de valeurs.
Une méthode de RegExp qui teste la correspondance d'une chaîne. Elle retourne true ou false.
Une méthode de String qui effectue une recherche de correspondance dans une chaîne. Elle retourne un tableau de valeurs ou null en cas d'échec.
Une méthode de RegExp qui teste la correspondance d'une chaîne. Elle retourne l'index de la capture, ou -1 en cas d'échec.
Une méthode de String qui effectue une recherche de correspondance dans une chaîne, et remplace la sous-chaîne capturée par la chaîne de remplacement.
une méthode de String qui utilise une expression rationnelle ou une chaîne pour diviser une chaîne en un tableau de sous-chaînes.

Table 4.2: Méthodes utilisant les expressions rationnelles

Quand vous voulez savoir si un masque a trouvé une correspondance dans une chaîne, utilisez les méthodes test ou search; pour obtenir des informations supplémentaires (mais un teps d'exécution plus long), utilisez les méthodes exec ou match. Si vous utilisez exec ou match et si la capture est réussie, ces méthodes retourneront un tableau et actualiseront les variables de l'objet RegExp associé. Si la capture échoue, la méthode exec retournera null. (qui se convertit en false)

Dans cet exemple, le script utilise la méthode exec pour trouver une correspondance dans une chaîne.

<SCRIPT type="text/javascript">
  monExpr = /d(b+)d/g;
  monTableau = monExpr.exec("cdbbdbsbz");
</SCRIPT>

Si vous n'avez pas besoin d'accéder aux propriétés de l'expression rationnelle, il y a une autre façon de créer monTableau dans ce script:

<SCRIPT type="text/javascript">
  monTableau = /d(b+)d/g.exec("cdbbdbsbz");
</SCRIPT>

Si vous voulez construire une expression rationnelle à partir d'une chaîne de caractères, il y a encore une autre alternative:

<SCRIPT type="text/javascript">
  monExpr = new RegExp ("d(b+)d", "g");
  monTableau = monExpr.exec("cdbbdbsbz");
</SCRIPT>

Avec ces scripts, la capture réussit et retourne un tableau et actualise les variables, montrées dans le tableau ci-dessous.

Objet Propriété ou Index Description Dans cet exemple
monTableau   La chaîne capturée ainsi que les sous-chaînes conservées en mémoire. {{mediawiki.external('\"dbbd\", \"bb\"')}}
  index L'index de la capture dans la chaîne (commence à 0). 1
  input La chaîne d'origine. "cdbbdbsbz"
  {{mediawiki.external(0)}} La dernière capture. "dbbd"
monExpr lastIndex L'index de départ de la prochaine capture. (Cette variable n'est disponible que si l'expression rationnelle utilise l'option "g", décrite dans Exécution de recherches globales, ignorer la casse, utlisation de chaînes multi-lignes) 5
  source Le masque d'origine. Actualisé lors de la crétion de l'expression rationnelle, et non pas lors de son exécution. "d(b+)d"

Table 4.3: Résultats de l'exécution d'une expression rationnelle.

Comme il l'est montré dans le second exemple, vous pouvez utiliser une expression rationnelle créée à l'aide du contructeur d'objets sans l'assigner à une variable. Cependant, dans ce cas, chaque occurence crée une nouvelle expression rationnelles; si vous utilisez cette technique, vous ne pouvez pas accéder aux propriétés de cette expression rationnelle. Par exemple, considérez ce script:

<SCRIPT type="text/javascript">
  monExpr = /d(b+)d/g;
  monTableau = monExpr.exec("cdbbdbsbz");
  document.writeln("La valeur de lastIndex est " + monExpr.lastIndex);
</SCRIPT>

Ce script affiche:

La valeur de lastIndex est 5

Cependant, si vous avez ce script:

<SCRIPT type="text/javascript">
  monTableau = /d(b+)d/g.exec("cdbbdbsbz");
  document.writeln("La valeur de lastIndex est " + /d(b+)d/g.lastIndex);
</SCRIPT>

Vous obtenez:

La valeur de lastIndex est 0

Les occurences de /d(b+)d/g dans les deux instructions sont deux expressions rationnelles différentes et elles possèdent des valeurs différentes pour leur propriété lastIndex. Si vous voulez accéder aux propriétés d'une expression rationnelle, vous devez l'assigner à une variable.

{{wiki.template('PrécédentSuivant', [ "Guide_JavaScript_1.5:Ecriture_d\'un_masque_d\'expression_rationnelle", "" ])}}

Source de la révision

<p>
</p>
<ul><li> <a href="fr/Guide_JavaScript_1.5/Travailler_avec_les_expressions_rationnelles/Ex%c3%a9cution_de_recherches_globales%2c_ignorer_la_casse%2c_utlisation_de_cha%c3%aenes_multi-lignes">Exécution de recherches globales, ignorer la casse, utlisation de chaînes multi-lignes</a>
</li><li> <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>
</li><li> <a href="fr/Guide_JavaScript_1.5/Travailler_avec_les_expressions_rationnelles/Exemples_d'expressions_rationnelles">Exemples d'expressions rationnelles</a>
</li></ul>
<h3 name="Travailler_avec_les_expressions_rationnelles"> Travailler avec les expressions rationnelles </h3>
<p>Les expressions rationnelles sont utilisées avec les méthodes test et exec de RegExp, et avec les méthodes match, replace, search et split de String. Ces méthodes sont expliquées en détail dans le <a class="external" href="http://developer.mozilla.org/en/docs/Core">JavaScript Reference|Core JavaScript Reference</a>.
</p>
<table class="fullwidth-table">
<tbody><tr>
<th>Méthode</th>
<th>Description</th>
</tr>
<tr>
<td><a class="external" href="http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:RegExp:exec|exec">]</a></td>
<td>Une méthode de <code>RegExp</code> qui effectue une recherche de correspondance dans une chaîne. Elle retourne un tableau de valeurs.   </td>
</tr>
<tr>
<td><a class="external" href="http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:RegExp:test|test">
</a></td><td>Une méthode de <code>RegExp</code> qui teste la correspondance d'une chaîne. Elle retourne <code>true</code> ou <code>false</code>.  </td>
</tr>
<tr>
<td><a class="external" href="http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:String:match|match">
</a></td><td>Une méthode de <code>String</code> qui effectue une recherche de correspondance dans une chaîne. Elle retourne un tableau de valeurs ou <code>null</code> en cas d'échec.  </td>
</tr>
<tr>
<td><a class="external" href="http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:String:search|search">
</a></td><td>Une méthode de <code>RegExp</code> qui teste la correspondance d'une chaîne. Elle retourne l'index de la capture, ou -1 en cas d'échec.  </td>
</tr>
<tr>
<td><a class="external" href="http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:String:replace|replace">
</a></td><td>Une méthode de <code>String</code> qui effectue une recherche de correspondance dans une chaîne, et remplace la sous-chaîne capturée par la chaîne de remplacement.  </td>
</tr>
<tr>
<td><a class="external" href="http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:String:split|split">
</a></td><td>une méthode de <code>String</code> qui utilise une expression rationnelle ou une chaîne pour diviser une chaîne en un tableau de sous-chaînes.   </td>
</tr>
</tbody></table>
<p><small><b>Table 4.2: Méthodes utilisant les expressions rationnelles </b></small>
</p><p>Quand vous voulez savoir si un masque a trouvé une correspondance dans une chaîne, utilisez les méthodes <code>test</code> ou <code>search</code>; pour obtenir des informations supplémentaires (mais un teps d'exécution plus long), utilisez les méthodes <code>exec</code> ou <code>match</code>. Si vous utilisez <code>exec</code> ou <code>match</code> et si la capture est réussie, ces méthodes retourneront un tableau et actualiseront les variables de l'objet <code>RegExp</code> associé. Si la capture échoue, la méthode <code>exec</code> retournera <code>null</code>. (qui se convertit en <code>false</code>)
</p><p>Dans cet exemple, le script utilise la méthode <code>exec</code> pour trouver une correspondance dans une chaîne.
</p>
<pre>&lt;SCRIPT type="text/javascript"&gt;
  monExpr = /d(b+)d/g;
  monTableau = monExpr.exec("cdbbdbsbz");
&lt;/SCRIPT&gt;
</pre>
<p>Si vous n'avez pas besoin d'accéder aux propriétés de l'expression rationnelle, il y a une autre façon de créer <code>monTableau</code> dans ce script:
</p>
<pre>&lt;SCRIPT type="text/javascript"&gt;
  monTableau = /d(b+)d/g.exec("cdbbdbsbz");
&lt;/SCRIPT&gt;
</pre>
<p>Si vous voulez construire une expression rationnelle à partir d'une chaîne de caractères, il y a encore une autre alternative:
</p>
<pre>&lt;SCRIPT type="text/javascript"&gt;
  monExpr = new RegExp ("d(b+)d", "g");
  monTableau = monExpr.exec("cdbbdbsbz");
&lt;/SCRIPT&gt;
</pre>
<p>Avec ces scripts, la capture réussit et retourne un tableau et actualise les variables, montrées dans le tableau ci-dessous.
</p>
<table class="fullwidth-table">
<tbody><tr>
<th>Objet</th>
<th>Propriété ou Index</th>
<th>Description</th>
<th>Dans cet exemple</th>
</tr>
<tr>
<td>monTableau</td>	
<td> </td>
<td>La chaîne capturée ainsi que les sous-chaînes conservées en mémoire.  </td>
<td>{{mediawiki.external('\"dbbd\", \"bb\"')}}</td>
</tr>
<tr>
<td> </td>
<td>index</td>
<td>L'index de la capture dans la chaîne (commence à 0).  </td>
<td>1  </td>
</tr>
<tr>
<td> </td>
<td>input</td>
<td>La chaîne d'origine.  </td>
<td>"cdbbdbsbz"  </td>
</tr>
<tr>
<td> </td>
<td>{{mediawiki.external(0)}}</td>
<td>La dernière capture.  </td>
<td>"dbbd"  </td>
</tr>
<tr>
<td>monExpr 	</td>
<td>lastIndex</td>
<td>L'index de départ de la prochaine capture. (Cette variable n'est disponible que si l'expression rationnelle utilise l'option "g", décrite dans <a href="fr/Guide_JavaScript_1.5/Travailler_avec_les_expressions_rationnelles/Ex%c3%a9cution_de_recherches_globales%2c_ignorer_la_casse%2c_utlisation_de_cha%c3%aenes_multi-lignes">Exécution de recherches globales, ignorer la casse, utlisation de chaînes multi-lignes</a>)  </td>
<td>5  </td>
</tr>
<tr>
<td> </td>
<td>source</td>
<td>Le masque d'origine. Actualisé lors de la crétion de l'expression rationnelle, et non pas lors de son exécution.  </td>
<td>"d(b+)d"</td>
</tr>
</tbody></table>
<p><small><b>Table 4.3: Résultats de l'exécution d'une expression rationnelle.</b></small>
</p><p>Comme il l'est montré dans le second exemple, vous pouvez utiliser une expression rationnelle créée à l'aide du contructeur d'objets sans l'assigner à une variable. Cependant, dans ce cas, chaque occurence crée une nouvelle expression rationnelles; si vous utilisez cette technique, vous ne pouvez pas accéder aux propriétés de cette expression rationnelle. Par exemple, considérez ce script:
</p>
<pre>&lt;SCRIPT type="text/javascript"&gt;
  monExpr = /d(b+)d/g;
  monTableau = monExpr.exec("cdbbdbsbz");
  document.writeln("La valeur de lastIndex est " + monExpr.lastIndex);
&lt;/SCRIPT&gt;
</pre>
<p>Ce script affiche:
</p>
<pre>La valeur de lastIndex est 5
</pre>
<p>Cependant, si vous avez ce script:
</p>
<pre>&lt;SCRIPT type="text/javascript"&gt;
  monTableau = /d(b+)d/g.exec("cdbbdbsbz");
  document.writeln("La valeur de lastIndex est " + /d(b+)d/g.lastIndex);
&lt;/SCRIPT&gt;
</pre>
<p>Vous obtenez:
</p>
<pre>La valeur de lastIndex est 0
</pre>
<p>Les occurences de <code>/d(b+)d/g</code> dans les deux instructions sont deux expressions rationnelles différentes et elles possèdent des valeurs différentes pour leur propriété <code>lastIndex</code>. Si vous voulez accéder aux propriétés d'une expression rationnelle, vous devez l'assigner à une variable.
</p><p>{{wiki.template('PrécédentSuivant', [ "Guide_JavaScript_1.5:Ecriture_d\'un_masque_d\'expression_rationnelle", "" ])}}
</p>
Revenir à cette révision