RegExp

Alternative

CaractèreSignification
x|y    Correspond soit à x, soit à y.     Par exemple, /vert|rouge/ correspond à "vert" dans "pomme verte" et à "rouge" dans "pomme rouge".   

 

https://developer.mozilla.org/fr/docs/web/javascript/reference/objets_globaux/regexp

Classes de caractères

CaractèreSignification
.    (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.     Avec ES2018, le marqueur s (dotAll) peut être utilisé afin que le point corresponde également aux caractères de fin de ligne.     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".   
\tCorrespond à une tabulation horizontale.
\rCorrespond à un retour chariot.
\nCorrespond à un saut de ligne.
\vCorrespond à une tabulation verticale.
\fCorrespond à un saut de page.
[\b]Correspond à un retour arrière. (à ne pas confondre avec \b)
\0Correspond 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.   
\xhhCorrespond au caractère de code hh (deux chiffres hexadécimaux).
\uhhhhCorrespond 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*".   

 

https://developer.mozilla.org/fr/docs/web/javascript/reference/objets_globaux/regexp

Ensembles de caractères

CaractèreSignification
[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".   

Groupes et références arrières

CaractèreSignification
(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.

Indicateurs

Cet argument est une  une chaîne de caractères qui peut contenir une combinaison des valeurs suivantes :
 

indicateurs 
grecherche globale ; retrouve toutes les correspondances plutôt que de s'arrêter après la première.
ila casse est ignorée. Si le marqueur u est également activé, les caractères Unicode équivalents pour la casse correspondent.
mmultiligne : 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)
uunicode : traite le modèle comme une séquence de points de code Unicode.
yadhé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à).
s"dotAll" : permet d'indiquer que . peut correspondre à un saut de ligne.


     

https://developer.mozilla.org/fr/docs/web/javascript/reference/objets_globaux/regexp

Limites

CaractèreSignification
^    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".   

Quantificateurs

CaractèreSignification
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}?   
    Par défaut, les quantificateurs comme * et + sont gloutons et la correspondance sera aussi grande que possible.     En ajoutant le point d'interrogation (?) après le quantificateur, on lui enlève son caractère glouton et la correspondance est aussi petite que possible.     Par exemple, dans la chaîne "<toto>/ trouve "/ trouve "
(?<=y)x    Correspond à x uniquement si x est précédé de y.     Ainsi, /(?<=Jack)Sprat/ trouvera "Sprat" seulement s'il est précédé de "Jack".
    /(?<=Jack|Tom)Sprat/ trouvera "Sprat" seulement s'il est précédé de "Jack" ou "Tom".
    Toutefois, "Jack" ou "Tom" ne feront pas partie des résultats.   

 

Syntaxe

Il existe deux façons de créer un objet RegExp

  • une notation littérale  : new RegExp(/ab+c/, 'i'); à utilisez lorsque l'expression rationnelle reste constante
  • un constructeur : new RegExp('ab+c', 'i'); à utiliser lorsque le modèle d'une expression rationnelle sera variable



Pour vérifier l'expression son régulière

https://regex101.com/

https://developer.mozilla.org/fr/docs/web/javascript/reference/objets_globaux/regexp