Flux rss
Collection CommentÇaMarche.net
Bookmark Ajouter aux favoris / Partager

Les particularités de l'objet RegExp

L'objet RegExp est un objet permettant de manipuler des expressions régulières, c'est-à-dire des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, afin de trouver des portions de la chaîne correspondant au modèle.

La création d'un objet RegExp se crée à l'aide d'une simple expression comme suit :

Expression = /motif/drapeau

Il est également possible de créer un tel objet de manière plus classique à l'aide de son constructeur :

Expression = new RegExp("motif","drapeau")

Le motif représente l'expression régulière en elle-même tandis que le drapeau (optionnel) permet de préciser le comportement de l'expression régulière :

  • g indique une recherche globale sur la chaîne de caractère et indique une recherche de toutes les occurences.
  • i indique une recherche non sensible à la casse, c'est-à-dire que la recherche se fait indépendamment de l'écriture en majuscule ou minuscule de la chaîne.
  • gi combine les deux comportements précédents.

Construire une expression régulière

Les expressions régulières permettent de rechercher des occurrences (c'est-à-dire une suite de caractères correspondant à ce que l'on recherche) grâce à une série de caractères spéciaux. L'expression régulière en elle-même est donc une chaîne de caractère contenant des caractères spéciaux et des caractères standards.

Pour rechercher un caractère faisant partie des caractères spéciaux, il suffit de le faire précéder d'un antislash (sauf entre crochets) :

Caractère spécial Echappement
\ \\
. \.
$ \$
[ \[
] \]
( \(
) \)
{ \{
} \}
^ \^
? \?
* \*
+ \+
- \-

Début et fin de chaîne

Les symboles ^ et $ indiquent respectivement le début et la fin d'une chaîne, et permettent donc de la délimiter.

"^debut": chaîne qui commence par "debut"

"fin$": chaîne qui se termine par "fin"

"^chaîne$": chaîne qui commence et se termine par "chaîne"

"abc": chaîne contenant la chaîne "abc"

Nombre d'occurences

Les symboles *, + et ?, signifient respectivement "zéro ou plusieurs", "au moins un", "un ou aucun", et permettent de donner une notion de quantité.

"abc+": chaîne qui contient "ab" suivie de un ou plusieurs "c" ("abc", "abcc", etc.)
"abc*": chaîne qui contient "ab" suivie de zéro ou plusieurs "c" ("ab", "abc", etc.)
"abc?": chaîne qui contient "ab" suivie de zéro ou un "c" ("ab" ou "abc" uniquement)
"^abc+": chaîne commençant par "ab" suivie de un ou plusieurs "c" ("abc", "abcc", etc.)

Les accolades {X,Y} permettent de donner des limites précises de nombre d'occurences.

"abc{2}": chaîne qui contient "ab" suivie de deux "c" ("abcc")
"abc{2,}": chaîne qui contient "ab" suivie de deux "c" ou plus ("abcc" etc..)
"abc{2,4}": chaîne qui contient "ab" suivie 2, 3 ou 4 "c" ("abcc" .. "abcccc")
Il est à noter que le premier nombre de la limite est obligatoire ("{0,2}", mais pas "{,2}"). Les symboles vu précedemment ('*', '+', et '?') sont équivalents à "{0,}", "{1,}", et "{0,1}".

Parenthèses capturantes

Les parenthèses ( ) permettent de représenter une séquence de caractères et de capturer le résultat. Les occurences correspondant au motif entre parenthèses sont accessibles via la méthode exec() de l'objet RegExp ou bien les méthodes search(), match() et replace() de l'objet String.

"a(bc)+": chaîne qui contient "a" suivie de au moins
une occurence de la chaîne "bc"

La barre verticale | se comporte en tant qu'opérateur OU

"(un|le)": chaîne qui contient "un" ou "le"

"(un|le) chien": chaîne qui correspond à
 "un chien" ou "le chien"

"commentcamarche\.((net)|(com)|(org))":
chaîne qui correspond à  :
"commentcamarche.net"
"commentcamarche.com"
"commentcamarche.org"

Caractère quelconque

Le point (.) indique n'importe une occurence de n'importe quel caractère.

"^.{3}$": chaîne qui contient 3 caractères
".*": Tous les caractères

Liste de caractères

Les crochets [ ] définissent une liste de caractères autorisés (ou interdits). Le signe - permet quand à lui de définir un intervalle. Le caractère ^ après le premier crochet indique quand à lui une interdiction.

"[abc]": chaîne qui contient un "a", un "b", ou un "c".
"[a-z]": chaîne qui contient un caractère compris entre "a" et "z".
"[^a-zA-Z]": chaîne qui ne commence pas par une lettre.
En effet entre crochets, chaque caractère représente ce qu'il est. Pour représenter un ] il faut le mettre en premier (ou après un ^ si c'est une interdiction). Etant donné que le signe - sert à définir un intervalle, il est nécessaire de commencer ou de terminer par ce caractère lorsque l'on veut indiquer qu'il fait partie des caractères autorisés :
"[-ag]": chaîne qui contient un moins (-), un "a", ou un "g"
"[a-g]": chaîne qui contient un caractère compris entre "a" et "g"
"[\+?{}.]": chaîne qui contient un de ces six caractères
"[]-]": chaîne qui contient le caractère "]" ou le caractère "-"

Caractères spéciaux

Il existe enfin des caractères spéciaux (précédés d'une barre oblique inverse) représentant des types de caractères spécifiques :

Caractère spécial Utilité
\b Permet de capturer une coupure de mot, c'est-à-dire des caractères situés au tout début ou à la fin d'un mot. Par exemple "he\b" permet de capturer "CommentCaMarche" mais pas "chenil". De la même façon "\bCo" permet de capturer "CommentCaMarche" mais pas "DéCor".
\B Permet de capturer les caractères non précédés ou suivis d'une coupure de mot, c'est-à-dire des caractères situés au milieu d'un mot. Par exemple "ment\B" permet de capturer "CommentCaMarche" mais pas "Comment Ca Marche".
\cCaractère Permet de capturer un caractère de contrôle (correspondant à la combinaison Ctrl+Caractère. Par exemple "\cC" permet de capturer la séquence Ctrl+c.
\d Permet de capturer un caractère numérique. \d est ainsi équivalent à [0-9].
\f Permet de capturer un saut de page.
\n Permet de capturer un saut de ligne.
\r Permet de capturer un retour chariot.
\s Permet de capturer un "caractère blanc" (espace, retour chariot, tabulation, saut de ligne, saut de page).
\S Permet de capturer un "caractère non blanc" (tous les caractères sauf espace, retour chariot, tabulation, saut de ligne, saut de page).
\t Permet de capturer une tabulation horizontale.
\v Permet de capturer une tabulation verticale.
\w Permet de capturer un caractère alphanumérique (y compris le caractère _). \w est ainsi équivalent à [a-zA-Z0-9_].
\w Permet de capturer un caractère non alphanumérique. \W est ainsi équivalent à [^a-zA-Z0-9_].
\oNombre Permet de capturer un nombre en base octale (base 8).
\xNombre Permet de capturer un nombre en base hexadécimale (base 16).

Tableau récapitulatif

Voici un tableau récapitulatif des caractères spéciaux utilisés dans les expressions régulières :

Caractère Utilité
\ Le caractère antislash représente lui-même ou le caractère spécial qui le suit.
[] Les crochets définissent une liste de caractères.
() Les parenthèses définissent un élément composé de l'expression régulière qu'elle contient.
{} Les accolades lorsqu'elles contiennent un ou plusieurs chiffres séparés par des virgules représentent le nombre d'occurences de l'élément les précédant (par exemple p{2,5} correspond à ppp, pppp ou ppppp
- Un moins entre deux caractères dans une liste représente un intervalle (par exemple [a-d] représente [abcd]).
. Le caractère point représente un caractère quelconque.
* Le caractère astérisque indique un nombre d'occurences indéterminé (y compris aucune) de l'élément le précédant.
+ Le caractère plus indique une ou plusieurs occurences de l'élément le précédant.
? Le caractère "point d'interrogation" indique une occurence éventuelle (0 ou 1) de l'élément le précédant.
| La barre verticale signifie l'occurrence de l'élément situé à sa gauche ou de celui situé à sa droite (lard|cochon)
^
  • Placé en début d'expression il signifie "chaîne commençant par .. "
  • Utilisé entre crochet, immédiatement après le crochet ouvrant, il signifie "ne contenant pas les caractères suivants...
[abc] Permet de rechercher les caractères compris entre les crochets.
[^abc] Permet de rechercher tous les caractères sauf ceux compris entre les crochets.
$ Placé en fin d'expression il signifie "chaîne finissant par ... "

Les propriétés de l'objet RegExp

Le résultat d'une expression régulière est stockée dans l'objet RegExp. Les propriétés de l'objet RegExp contiennent des chaînes correspondant à la dernière occurence trouvée.
La syntaxe pour manipuler ces données est la suivante :

RegExp.propriété
Propriété Description
$_ Propriété correspondant à la propriété input.
$* Propriété correspondant à la propriété multiline.
$& Propriété correspondant à la propriété LastMatch.
$+ Propriété correspondant à la propriété LastParen.
$` Propriété correspondant à la propriété LeftContext.
$' Propriété correspondant à la propriété RightContext.
global Propriété booléenne indiquant si la recherche est globale (true) ou non (false).
ignoreCase Propriété booléenne indiquant si la recherche est sensible à la casse (true) ou non (false).
input Indique la chaîne d'entrée sur laquelle la recherche est réalisée.
lastIndex Indique la position à laquelle la recherche suivante va se faire.
lastMatch Contient la dernière occurence trouvée.
lastParen Contient la dernière occurence correspondant à un motif entre parenthèses.
leftContext Contient la chaîne situé à gauche de l'occurence trouvée.
multiline Propriété booléenne indiquant si la recherche porte sur plusieurs lignes (true) ou non (false).
rightContext Contient la chaîne situé à droite de l'occurence trouvée.
source Contient le motif de l'expression régulière.

Les méthodes de l'objet RegExp

Les méthodes de l'objet RegExp permettent d'appliquer l'expression régulière à une chaîne de caractères.

Le tableau suivant décrit les méthodes de l'objet RegExp :

Méthode Description
Expression.compile("chaine"); Permet de redéfinir une nouvelle expression régulière.
Expression.exec("chaine"); Effectue une recherche sur la chaîne de caractère avec l'expression régulière définie. Cette méthode retourne un tableau contenant les occurences trouvées.
Expression.test("chaine"); Teste une chaîne de caractère avec l'expression régulière. Cette méthode retourne True si la recherche est fructueuse, false dans le cas contraire.


Dernière modification le mardi 14 octobre 2008 à 17:40:36.Ce document intitulé « Javascript - L'objet RegExp » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Javascript - L'objet window Les particularités de l'objet window L'objet window est l'objet par excellence dans Javascript, car il est le parent de chaque objet qui compose la page web, il contient donc : l'objet document: la page en elle-même l'objet location: le lieu de... www.commentcamarche.net/contents/javascript/jswindow.php3
Javascript - L'objet Date Les particularités de l'objet Date L'objet Date permet de travailler avec toutes les variables qui concernent les dates et la gestion du temps. Il s'agit d'un objet inclus de façon native dans Javascript, et que l'on peut toujours utiliser. La... www.commentcamarche.net/contents/javascript/jsdate.php3
Javascript - La notion d'objet Notion d'objet Le but de cette section n'a pas pour ambition de traîter de la programmation orientée objet mais de donner une idée de ce qu'est un objet, concept nécessaire à la création de scripts Javascript. Le Javascript traite les éléments qui... www.commentcamarche.net/contents/javascript/jsobjet.php3
Javascript - Connaître la hauteur d'un élément HTMLSi vous souhaitez connaître la hauteur (height) d'un bloc HTML en javascript, il existe deux façons selon les navigateurs : element.offsetHeight element.style.pixelHeight Ainsi, le code suivant permet d'obtenir la hauteur d'un bloc HTML... www.commentcamarche.net/faq/sujet-11739-javascript-connaitre-la-hauteur-d-un-element-html
Javascript - Modifier la hauteur (height) d'un élément HTMLPour modifier la hauteur d'un élément HTML en javascript, il suffit d'utiliser sa propriété de style "height". Pour cela vous pouvez y faire référence de la manière suivante : Si vous souhaitez connaître la hauteur (height) d'un bloc HTML, il... www.commentcamarche.net/faq/sujet-11740-javascript-modifier-la-hauteur-height-d-un-element-html
Javascript - Echapper une apostropheEn Javascript, une apostrophe (simple quote) dans une chaîne elle-même délimitée par des apostrophes cause une erreur. Pour y remédier il faut échapper l'apostrophe, c'est-à-dire la précéder du caractère antislash pour faire comprendre à... www.commentcamarche.net/faq/sujet-16308-javascript-echapper-une-apostrophe
[RegExp][JavaScript] Problème avec une RegExpBonjour, J'ai un petit problème avec ma première RegExp en JavaScript. Cette RegExp doit vérifier les critères ci-dessou dans un email: -Commence par une ou plusieur : lettre(maj ou min), chiffre, _, - -Ensuite vient le @ -Ensuite vient zero ou... www.commentcamarche.net/forum/affich-2477622-regexp-javascript-probleme-avec-une-regexp
Javascript : 'Erreur : Objet Requis'Bonjour, Je suis en train de taffer sur un projet en partie réalisée avec AJAX et XML, et je me retrouve bloqué sur un problème d'objet requis :/ Mon code marche parfaitement sous FF (normal, comme d'hab) mais IE fait chier (encore une fois , comme... www.commentcamarche.net/forum/affich-9301172-javascript-erreur-objet-requis
[JAVASCRIPT] Bug IE - getelementbyid (Résolu)Bonjour tout le monde, J imagine que le problème a déjà été posé des milliers de fois mais je trouve pas de solution à celui-ci. J'ai donc un tableau en HTML qui a un id="aloha". Quand je veux accéder à ce tableau en javascript, sous firefox il... www.commentcamarche.net/forum/affich-3537176-javascript-bug-ie-getelementbyid
Télécharger JavaScript ObfuscatorJasob JavaScript Obfuscator est un logiciel de protection de code Javascript. Il intègre une interface simple. Il vous permet de convertir votre code Javascript en un code incompréhensible pour l’homme mais lisible pour le navigateur. Le logiciel... www.commentcamarche.net/telecharger/telecharger-34056889-javascript-obfuscator
Javascript - L'objet StringLes particularités de l'objet String string est un mot anglais qui signifie "chaîne", il s'agit en fait de chaîne de caractères. L'objet String est un objet qui contient un certain nombre de propriétés et de méthodes permettant la manipulation... www.commentcamarche.net/contents/javascript/jsstring.php3
Javascript - l'objet ArrayLes particularités de l'objet Array L'objet Array est un objet du noyau Javascript permettant de créer et de manipuler des tableaux. Voici la syntaxe à utiliser pour créer une variable tableau : var x = new Array(element1[, element2, ...]); Si... www.commentcamarche.net/contents/javascript/jsarray.php3
Javascript - L'objet MathLes particularités de l'objet Math L'objet Math est, comme vous l'imaginez, un objet qui a de nombreuses méthodes et propriétés permettant de manipuler des nombres et qui contient des fonctions mathématiques courantes. Quelque soit la méthode ou la... www.commentcamarche.net/contents/javascript/jsmath.php3