Le constructeur RegExp crée un objet expression rationnelle pour la reconnaissance d'un modèle dans un texte.

Pour une introduction aux expressions rationnelles, lire le chapitre Expressions Rationnelles dans le Guide JavaScript.

Syntaxe

Les notations littérales, par constructeur ou de base sont possibles :

/modèle/indicateurs
new RegExp(modèle[, indicateurs])
RegExp(modèle[, indicateurs])

Paramètres

modèle
Le texte de l'expression rationnelle ou, à partir d'ES5, un autre objet ou littéral RegExp à copier.
indicateurs

Si cet argument est utilisé, il indique les marqueurs à utiliser pour l'expression rationnelle. Ces valeurs remplaceront celles de l'objet à copier si modèle est un objet RegExp (lastIndex sera réinitialisé à 0 à partir d'ECMAScript 2015 / ES6). Cet argument est une chaîne de caractères qui peut contenir une combinaison des valeurs suivantes :

g
recherche globale ; retrouve toutes les correspondances plutôt que de s'arrêter après la première.
i
la casse est ignorée. Si le marqueur u est également activé, les caractères Unicode équivalents pour la casse correspondent.
m
multiligne : les caractères de début et de fin (^ et $) sont traités comme travaillant sur des lignes multiples (i.e, ils correspondent au début et à la fin de chaque ligne (délimitée par \n ou \r), pas seulement au début ou à la fin de la chaîne d'entrée complète).
u
unicode : traite le modèle comme une séquence de points de code Unicode.
y
adhérence : n'établit de correspondance qu'à partir de l'indice dans la chaîne cible indiqué par la propriété lastIndex de l'expression rationnelle (et ne cherche pas à établir de correspondance à partir d'indices au delà).

Description

Il existe deux façons de créer un objet RegExp : une notation littérale ou un constructeur. Pour délimiter les chaînes, les paramètres de la notation littérale n'utilisent pas d'apostrophes, tandis que le constructeur utilise des apostrophes. Ainsi, les expressions suivantes créent la même expression rationnelle :

/ab+c/i;
new RegExp('ab+c', 'i');
new RegExp(/ab+c/, 'i');

La notation littérale effectue la compilation de l'expression rationnelle lorsque l'expression est évaluée. Utilisez la notation littérale lorsque l'expression rationnelle reste constante. Par exemple, si vous utilisez la notation littérale pour construire une expression rationnelle utilisée dans une boucle, l'expression rationnelle ne sera pas recompilée à chaque itération.

Le constructeur de l'objet expression rationnelle, par exemple new RegExp('ab+c'), effectue la compilation de l'expression rationnelle au moment de l'exécution. Utilisez la fonction constructeur quand vous savez que le modèle d'une expression rationnelle sera variable, ou si vous ne connaissez pas le modèle et que vous l'obtiendrez d'une autre source, telle qu'une saisie utilisateur.

À partir d'ECMAScript 6, new RegExp(/ab+c/, 'i') ne déclenche plus d'exception TypeError ("can't supply flags when constructing one RegExp from another") lorsque le premier argument est une RegExp et que le second argument indicateurs est présent. Une nouvelle RegExp sera créée à la place à partir des arguments.

Lorsqu'on utilise le constructeur, les règles normales d'échappement de chaîne (le fait de faire précéder d'un \ les caractères spéciaux à l'intérieur d'une chaîne) sont requises. Par exemple, les définitions suivantes sont équivalentes :

var re = /\w+/;
var re = new RegExp('\\w+');

Signification des caractères spéciaux dans les expressions rationnelles

Classes de caractères
Caractère Signification
.

(Le point) correspond à n'importe quel caractère excepté les caractères de fin de ligne : \n, \r, \u2028 ou \u2029.

Au sein d'un ensemble de caractères, le point perd son sens spécial et correspond à un point normal.

L'indicateur multiligne m ne modifie pas le comportement du point. Ainsi, pour reconnaître un modèle dans des lignes multiples, l'ensemble de caractères [^] (si vous n'avez pas une vieille version d'IE, bien sûr) pourra être utilisé, et il correspondra à n'importe quel caractère, nouvelles lignes comprises.

Par exemple, /.a/ correspondra à "ma" et "la", mais pas à "aujourd'hui", dans "aujourd'hui j'ai fait des crêpes".

\d

Correspond à n'importe quel chiffre (arabe). Équivalent à [0-9].

Par exemple, /\d/ ou /[0-9]/ correspond à "2" dans "B2 est le numéro d'appartement".

\D

Correspond à n'importe quel caractère qui n'est pas un chiffre (arabe). Équivalent à [^0-9].

Par exemple, /\D/ ou /[^0-9]/ correspond à "B" dans "B2 est le numéro d'appartement".

\w

Correspond à n'importe quel caractère alpha-numérique de l'alphabet latin de base, y compris le tiret bas. Équivalent à [A-Za-z0-9_].

Par exempe, /\w/ correspond à "p" dans "pomme", à "5" dans "5.28 €", et à "3" dans "3D".

\W

Correspond à n'importe quel caractère qui n'est pas un caractère alpha-numérique de l'alphabet latin de base, ni le tiret bas. Équivalent à [^A-Za-z0-9_].

Par exemple, /\W/ ou /[^A-Za-z0-9_]/ correspond à "%" dans "50%".

\s

Correspond à un caractère unique d'espacement (ce qui inclut l'espace, la tabulation, le saut de page, le saut de ligne et les autres espaces Unicode). Équivalent à [ \f\n\r\t\v​\u00a0\u1680​\u2000​-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff].

Par exemple, /\s\w*/ correspond à " truc" dans "machin truc".

\S

Correspond à un caractère unique autre que d'espacement. Équivalent à [^ \f\n\r\t\v​\u00a0\u1680​\u2000​-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff].

Par exemple, /\S\w*/ correspond à "machin" dans "machin truc".

\t Correspond à une tabulation horizontale.
\r Correspond à un retour chariot.
\n Correspond à un saut de ligne.
\v Correspond à une tabulation verticale.
\f Correspond à un saut de page.
[\b] Correspond à un retour arrière. (à ne pas confondre avec \b)
\0 Correspond au caractère NUL. Ne pas faire suivre d'un autre chiffre.
\cX

Où X une lettre entre A et Z. Correspond à un caractère de contrôle dans une chaîne.

Par exemple, /\cM/ correspond à control-M dans une chaîne.

\xhh Correspond au caractère de code hh (deux chiffres hexadécimaux).
\uhhhh Correspond au caractère UTF-16 de valeur hhhh (quatre chiffres hexadécimaux).
\u{hhhh} ou \u{hhhhh} Valable uniquement quand l'indicateur u est positionné. Correspond au caractère de valeur Unicode U+hhhh ou U+hhhhh (chiffres hexadécimaux)
\

Pour les caractères qui sont habituellement traités de façon littérale, indique que le caractère suivant est spécial et qu'il n'a pas à être interprété littéralement.

Par exemple, /b/ correspond au caractère "b". En plaçant un antislash avant le "b", c'est à dire en utilisant /\b/, le caractère devient spécial pour signifier limite de mot.

ou

Pour les caractères qui sont habituellement traités de façon spéciale, cela indique que le caractère suivant n'est pas spécial et doit être interprété littéralement.

Par exemple, "*" est un caractère spécial qui signifie que 0 ou davantage d'occurences du caractère précédent doivent être trouvées (par exemple, /a*/ signifie trouver 0 ou davantage "a"). Pour faire une recherche littérale sur "*", faites la précéder d'un antislash ; par exemple, /a\*/ correspond à "a*".

Ensembles de caractères
Caractère Signification
[xyz]
[a-c]

Un ensemble de caractères. Correspond à l'un quelconque des caractères inclus. Vous pouvez spécifier une plage de caractères en utilisant un tiret, mais si le tiret apparaît comme le premier ou le dernier caractère compris entre les crochets, il est pris comme un tiret littéral à inclure dans l'ensemble de caractères comme un caractère normal. Il est aussi possible d'inclure une classe de caractères dans un ensemble.

Par exemple, [abcd] est la même chose que [a-d]. Ils correspondent au "b" de "boeuf" et au "c" de "cher".

Également, [abcd] et [abcd-] correspondent au "b" de "boeuf", au "c" de "cher" et au "-" (tiret) de "peut-être".

De même, [\w-] est équivalent à [A-Za-z0-9_-]. Ils correspondent au le "b" de "boeuf" et au "c" de "cher", ainsi qu'au "-" (tiret) de "peut-être".

[^xyz]
[^a-c]

La négation (ou le complément) d'un ensemble de caractères. C'est-à-dire, il correspond à tout ce qui n'est pas compris dans les crochets. Vous pouvez spécifier une plage de caractères en utilisant un tiret, mais si le tiret apparaît comme le premier ou le dernier des caractères compris entre les crochets, il est pris comme un tiret littéral à inclure dans l'ensemble de caractères comme un caractère normal.

Par exemple, [^abc] est la même chose que [^a-c]. Ils correspondent initialement au "o" dans "bacon" et au "h" dans "cher".

Alternative
Caractère Signification
x|y

Correspond soit à x, soit à y.

Par exemple, /vert|rouge/ correspond à "vert" dans "pomme verte" et à "rouge" dans "pomme rouge".

Limites
Caractère Signification
^

Correspond au début de l'entrée. Si l'indicateur multiligne est utilisé, cela correspond également à immédiatement après un caractère de saut de ligne.

Par exemple, /^A/ ne correspond pas à "A" dans "un A", mais correspond au premier "A" dans "Ah Ah".

$

Correspond à la fin de l'entrée. Si l'indicateur multiligne est utilisé, cela correspond également à imédiatement avant un caractère de saut de ligne.

Par exemple, /t$/ ne correspond pas au "t" de "été", mais lui correspond dans "est".

\b

Correspond à une limite de mot . C'est la position où un caractère de mot n'est pas suivi ou précédé d'un autre caractère de mot, telle qu'entre une lettre ou une espace. Notez que la limite n'est pas incluse dans la correspondance. En d'autres termes, la longueur d'une limite de mot en correspondance est nulle.

Par exemple, /\bl/ correspond au "l" dans "lune"  ;
/un\b/ ne correspond pas au 'un' dans "lune", parce que 'un' est suivi par 'e' qui est un caractère de mot ;
/une\b/ correspond au 'une' dans "lune", parce que 'une' est la fin de la chaîne, donc non suivi d'un caractère de mot ;
/\w\b\w/ ne correspondra jamais à rien, parce qu'un caractère de mot ne peut jamais être suivi à la fois par un non caractère de mot et un caractère de mot.

\B

Correspond à une non limite de mot. C'est une position où les caractères suivant et précédent sont du même type : soit tous les deux doivent être des mots, soit tous les deux doivent être des non mots, comme entre deux lettres ou deux espaces. Le début et la fin d'une chaîne sont considérés comme des non mots. De même que la limite de mot en correspondance, la limite de non mot en correspondance n'est pas non plus incluse dans la correspondance.

Par exemple, /\Bdi/ correspond à "di" dans "à midi", et /hi\B/ correspond à "hi" dans "peut-être hier".

Groupes et références arrières
Caractère Signification
(x)

Correspond à x et garde en mémoire la correspondance. On appelle cela des parenthèses capturantes.

Ainsi, /(toto)/ correspond à "toto" dans "toto truc" et garde en mémoire la correspondance.

Les groupes capturés sont numérotés dans l'ordre des parenthèses gauches des groupes, à partir de 1. La sous-chaîne correspondante peut ensuite être rappelée dans le tableau résultant avec les indices [1], ..., [n] ou depuis les propriétés $1, ..., $9 de l'objet RegExp.

Si on utilise des groupes capturants, cela implique une diminution des performances. Si on n'a pas besoin d'utiliser la sous-chaîne, on utilisera des parenthèses non-capturantes (voir ci-après).

\n

Avec n un entier positif. Cela constitue une référence arrière à la dernière sous-chaîne correspondante du n-ième groupe (en comptant la parenthèse gauche).

Ainsi, /pomme(,)\sorange\1/ correspond à "pomme, orange," dans "pomme, orange, cerise, pêche". Un exemple plus détaillé illustre cela après le tableau.

(?:x) Correspond à x mais ne mémorise pas la correspondance. Ces parenthèses sont dites non-capturantes. La sous-chaîne correspondante ne peut pas être réutilisée dans le tableau résultant ou depuis les propriétés de l'objet RegExp.
Quantificateurs
Caractère Signification
x*

Correspond à l'élément précédent répété 0 ou plusieurs fois.

Ainsi, /bo*/ correspond à "boooo" dans "un gros boooonbon" et à "b" dans "un bateau", il ne correspond à rien dans "un oiseau".

x+

Correspond à l'élément précédent répété 1 ou plusieurs fois. Ce quantificateur est équivalent au quantificateur {1,}.

Ainsi, /a+/ correspond au "a" dans "maison" et à tous les "a" dans "maaaaison".

x?

Correspond à l'élément précédent présent 0 ou 1 fois.

Ainsi, /e?le?/ correspond à "el" dans "angel" et à "le" dans "angle."

S'il est utilisé immédiatement après les quantificateurs *, +, ?, ou {}, le point d'interrogation rendra le quantificateur « non-glouton » (la correspondance sera la plus petite possible), contrairement au comportement par défaut où la correspondance est la plus grande possible (« glouton »).

Le point d'interrogation est également utilisé dans les assertions d'anticipation (?=), (?!), et (?:) décrites ci-après.

x(?=y)

Correspond à x uniquement si x est suivi par y.

Ainsi, /Jack(?=Sprat)/ correspond à "Jack" uniquement si celui-ci est suivi par "Sprat". /Jack(?=Sprat|Frost)/ correspond à "Jack" uniquement si celui-ci est suivi par "Sprat" ou "Frost". En revanche, ni "Sprat" ni "Frost" ne font partie de la correspondance enregistrée.

x(?!y)

Correspond à x uniquement si x n'est pas suivi par y. Par exemple, /\d+(?!\.)/ correspond à un nombre uniquement si celui-ci n'est pas suivi d'un point décimal.

/\d+(?!\.)/.exec('3.141') correspond à "141" mais pas à "3.141".

x|y

Correspond à x ou à y.

Ainsi, /rouge|verte/ correspond à "rouge" dans "pomme rouge" et à "verte" dans "pomme verte".

x{n}

Avec n un entier positif. Correspond exactement à n occurences de l'élément précédent, x.

Ainsi, /a{2}/ ne correspond pas à "a" dans "maison", mais correspond à tous les "a" de "maaison", et aux deux premiers "a" de "maaaaison".

x{n,}

Avec n un entier positif, correspond à au moins n occurrences de l'élément précédent, x.

Ainsi, /a{2,}/ ne correspond pas à "a" dans "maison", mais correspond à tous les "a" dans "maaison" et dans "maaaaison".

x{n,m}

Avec n et m des entiers positifs et m > n, correspond à au moins n occurences et au plus m occurrences de l'élément précédent, x.

Ainsi, /a{1,3}/, ne correspond à rien dans "mison", à "a" dans "maison", aux deux "a" dans "maaison", et aux trois premiers "a" dans "maaaaaaison". On remarquera que bien pour la dernière correspondance, on ne récupère que trois fois "a" bien que le mot ait plus d'occurences.

x*?
x+?
x??
x{n}?
x{n,}?
x{n,m}?

Correspond comme précédemment pour *, +, ? et {...} décrit ci-avant mais afin que la correspondance soit la plus petite possible.

Par exemple, /<.*?>/ trouve "<toto>" dans "<toto> <truc>", alors que /<.*>/ trouve "<toto> <truc>".

Les quantificateurs utilisés sans ? sont qualifiés de gloutons (greedy) alors que ceux utilisant ? sont qualifiés de non-gloutons.

Propriétés

RegExp.prototype
Cette propriété permet d'ajouter des propriétés à tous les objets qui sont des expressions rationnelles.
RegExp.length
La valeur de longueur pour le constructeur dont la valeur est 2.
get RegExp[@@species]
La fonction de construction utilisée pour créer les objets dérivés.
RegExp.lastIndex
L'indice à partir duquel rechercher la prochaine correspondance.

Méthodes

L'objet global RegExp ne possède pas de méthode propre. En revanche, il hérite de certaines méthodes via sa chaîne de prototypes.

Le prototype de RegExp et les instances

Propriétés

Méthodes

Exemples

Utiliser une expression rationnelle pour modifier un format de données

Dans le script suivant, on utilise la méthode replace() de String pour effectuer une correspondance sur le prénom et le nom pour les inverser. On utilise des parenthèses capturantes pour pouvoir utiliser les correspondances dans la construction du résultat (avec $1 et $2).

var re = /(\w+)\s(\w+)/;
var chaîne = 'Alain Dupont';
var nouvelleChaîne = chaîne.replace(re, '$2, $1');
console.log(nouvelleChaîne);

Cela affichera "Dupont, Alain".

Utiliser une expression rationnelle pour découper des lignes avec différents sauts de ligne/fins de ligne

La fin de ligne par défaut dépend de la plateforme (Unix, Windows, etc.). Cette méthode de découpage fournie permet de découper indépendamment de la plateforme utilisée.

var texte = 'Un texte\net un autre\r\npuis ensuite\rla fin';
var lignes = texte.split(/\r\n|\r|\n/);
console.log(lignes); // affiche [ 'Un texte', 'et un autre', 'puis ensuite', 'la fin' ]

On voit ici que l'ordre des modèles dans l'expression rationnelle importe.

Utiliser une expression rationnelle sur plusieurs lignes

var s = 'Et voici\nune autre ligne !';
s.match(/voici.*ligne/);
// Renvoie null
s.match(/voici[^]*ligne/);
// Renvoie ['voici\nune autre ligne']

Utiliser une expression rationnelle avec l'indicateur d'adhérence

Cet exemple illustre comment on peut utiliser ce marqueur qui recherche une correspondance après RegExp.prototype.lastIndex.

var str = '#toto#';
var regex = /toto/y;

regex.lastIndex; // 0
regex.test(str); // true
regex.lastIndex = 1;
regex.test(str); // true
regex.lastIndex = 5;
regex.test(str); // false (lastIndex est pris en compte avec ce marqueur)
regex.lastIndex; // 0 (réinitialisation suite à l'échec)

Les expressions rationnelles et les caractères Unicode

Comme mentionné ci-avant, les classes \w ou \W ne correspondent qu'à des caractères ASCII "a" à "z", "A" à "Z", "0" à "9" et "_". Pour effectuer des correspondances sur d'autres caractères (comme par exemple les caractères cyrilliques), on utilisera \uhhhh, où "hhhh" représente la valeur Unicode exprimée en hexadécimal. Cet exemple illustre comment il est possible de séparer les caractères Unicode d'un mot.

var texte = 'Образец text на русском языке';
var regex = /[\u0400-\u04FF]+/g;

var corresp = regex.exec(texte);
console.log(corresp[0]);      // affiche 'Образец'
console.log(regex.lastIndex); // affiche '7'

var corresp2 = regex.exec(texte);
console.log(corresp2[0]);     // affiche 'на' (n'affiche pas text
console.log(regex.lastIndex); // affiche '15'

// et ainsi de suite

Voici une ressource tierce pour obtenir les différents intervalles Unicode des différents alphabets : Regexp-unicode-block.

Extraire un sous-domaine d'une URL

var url = 'http://xxx.domaine.com';
console.log(/[^.]+/.exec(url)[0].substr(7)); // affiche 'xxx'

Spécifications

Spécification État Commentaires
ECMAScript 1st Edition (ECMA-262) Standard Définition initiale. Implémentée avec JavaScript 1.1.
ECMAScript 5.1 (ECMA-262)
La définition de 'RegExp' dans cette spécification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'RegExp' dans cette spécification.
Standard

Le constructeur RegExp ne renvoie plus d'exception lorsqu'il est utilisé avec un objet RegExp et que le second argument est utilisé. Ajout du marqueur d'adhérence et du marqueur Unicode.

ECMAScript Latest Draft (ECMA-262)
La définition de 'RegExp' dans cette spécification.
Projet  

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung InternetNode.js
Support simpleChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
compile
Obsolète
Chrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
execChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
flagsChrome Support complet OuiEdge Support complet OuiFirefox Support complet 37IE Aucun support NonOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 37Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet 6.0.0
globalChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
ignoreCaseChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
RegExp.input ($_)
Non-standard
Chrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
lastIndexChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
RegExp.lastMatch ($&)
Non-standard
Chrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
RegExp.lastParen ($+)
Non-standard
Chrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
RegExp.leftContext ($`)
Non-standard
Chrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
lookbehind assertions ((?<= ) and (?<! ))Chrome Support complet 62Edge ? Firefox ? IE ? Opera Support complet 49Safari ? WebView Android Support complet 62Chrome Android Support complet 62Edge Mobile ? Firefox Android ? Opera Android Support complet 49Safari iOS ? Samsung Internet Android ? nodejs ?
multilineChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
RegExp.$1-$9
Non-standard
Chrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
prototypeChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
RegExp.rightContext ($')
Non-standard
Chrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
sourceChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
stickyChrome Support complet 49Edge Support complet 13Firefox Support complet 3IE Aucun support NonOpera Support complet 36Safari Support complet 10WebView Android Support complet 49Chrome Android Support complet 49Edge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet 36Safari iOS Support complet 10Samsung Internet Android Support complet 5.0nodejs Support complet Oui
testChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
toSource
Non-standard
Chrome Aucun support NonEdge Aucun support NonFirefox Support complet 1IE Aucun support NonOpera Aucun support NonSafari Aucun support NonWebView Android Aucun support NonChrome Android Aucun support NonEdge Mobile Aucun support NonFirefox Android Support complet 4Opera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Aucun support Nonnodejs Aucun support Non
toStringChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
unicodeChrome Support complet 50Edge Support complet 12
Notes
Support complet 12
Notes
Notes Case folding is implemented in version 13
Firefox Support complet 46IE Aucun support NonOpera Support complet 37Safari Support complet 10WebView Android Support complet OuiChrome Android Support complet 50Edge Mobile Support complet OuiFirefox Android Support complet 46Opera Android Support complet 37Safari iOS Support complet 10Samsung Internet Android Support complet 5.0nodejs Support complet Oui
@@matchChrome Support complet OuiEdge Support complet OuiFirefox Support complet 49IE Aucun support NonOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 49Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet 6.0.0
@@replaceChrome Support complet OuiEdge Support complet OuiFirefox Support complet 49IE Aucun support NonOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 49Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet 6.0.0
@@searchChrome Support complet OuiEdge Support complet OuiFirefox Support complet 49IE Aucun support NonOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 49Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet 6.0.0
@@speciesChrome Support complet OuiEdge Support complet OuiFirefox Support complet 49IE Aucun support NonOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 49Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet 6.5.0
Support complet 6.5.0
Support complet 6.0.0
Désactivée
Désactivée From version 6.0.0: this feature is behind the --harmony runtime flag.
@@splitChrome Support complet OuiEdge Support complet OuiFirefox Support complet 49IE Aucun support NonOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 49Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet 6.0.0

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue
Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.
Voir les notes d'implémentation.
Voir les notes d'implémentation.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.

Notes spécifiques à Firefox

À partir de Firefox 34, dans le cas où on utilise un groupe capturant avec des quantificateurs qui l'invalident, le texte correspondant au groupe est désormais undefined et non la chaîne vide :

// Firefox 33 ou antérieur
'x'.replace(/x(.)?/g, function(m, group) {
  console.log("'group:" + group + "'");
}); // 'group:'

// Firefox 34 ou supérieur
'x'.replace(/x(.)?/g, function(m, group) {
  console.log("'group:" + group + "'");
}); // 'group:undefined'

Pour des raisons de compatibilité web, RegExp.$N renverra une chaîne vide au lieu de undefined (bug 1053944).

Voir aussi

Étiquettes et contributeurs liés au document

Dernière mise à jour par : SphinxKnight,