From bf8e099b9c8b3c60d60b3712b4fc97b052c39887 Mon Sep 17 00:00:00 2001 From: julieng Date: Tue, 3 Aug 2021 08:03:23 +0200 Subject: convert content to md --- .../guide/regular_expressions/assertions/index.md | 163 ++++++++++++--------- 1 file changed, 97 insertions(+), 66 deletions(-) (limited to 'files/fr/web/javascript/guide/regular_expressions/assertions') diff --git a/files/fr/web/javascript/guide/regular_expressions/assertions/index.md b/files/fr/web/javascript/guide/regular_expressions/assertions/index.md index a16c6b48ce..1e1dbb1a9d 100644 --- a/files/fr/web/javascript/guide/regular_expressions/assertions/index.md +++ b/files/fr/web/javascript/guide/regular_expressions/assertions/index.md @@ -9,99 +9,130 @@ tags: translation_of: Web/JavaScript/Guide/Regular_Expressions/Assertions original_slug: Web/JavaScript/Guide/Expressions_régulières/Assertions --- -

{{jsSidebar("JavaScript Guide")}}{{draft}}

+{{jsSidebar("JavaScript Guide")}}{{draft}} -

Les assertions indiquent les conditions selon lesquelles il est possible d'avoir une correspondance (contenu situé avant la correspondance, situé après ou expressions conditionnelles).

+Les assertions indiquent les conditions selon lesquelles il est possible d'avoir une correspondance (contenu situé avant la correspondance, situé après ou expressions conditionnelles). -

Types

+## Types -
-

Note : Le caractère ? peut également être utilisé comme quantificateur.

-
+> **Note :** Le caractère `?` peut également être utilisé comme quantificateur. - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + +
CaractèresSignification
x(?=y) -

Correspond à 'x' seulement s'il est suivi de 'y'. On appelle cela un test de succession (lookahead).

- -

Ainsi, /Jack(?=Sparrow)/ correspond à 'Jack' seulement s'il est suivi de 'Sparrow'. /Jack(?=Sparrow|Bauer)/ correspond à 'Jack' seulement s'il est suivi de 'Sparrow' ou de 'Bauer'. Cependant, ni 'Sparrow' ni 'Bauer' ne feront partie de la correspondance.

-
x(?!y) -

Correspond à 'x' seulement si 'x' n'est pas suivi de 'y'.

- -

Ainsi, /\d+(?!\.)/ correspond à un nombre qui n'est pas suivi par un point, cette expression utilisée avec la chaîne 3.141 correspondra pour '141' mais pas pour '3.141'.

-
(?<=y)x -

Correspond à x seulement si x est précédé par y. C'est ce qu'on appelle une recherche arrière (lookbehind).

- -

Ainsi /(?<=Jack)Sprat/ correspond à "Sprat" seulement s'il est précédé de "Jack".
- /(?<=Jack|Tom)Sprat/ correspond à "Sprat" seulement s'il est précédé de "Jack" ou "Tom".
- Toutefois, "Jack" et "Tom" ne feront pas partie de la correspondance.

-
(?<!y)x -

Correspond à x uniquement si x n'est pas précédé par y (parfois appelée en anglais negated lookbehind).

- -

Ainsi, /(?<!-)\d+/ correspondra à un nombre seulement si celui-ci n'est pas précédé d'un signe moins.
- /(?<!-)\d+/.exec('3') cible "3".
-  /(?<!-)\d+/.exec('-3')  ne trouve aucune correspondance car le nombre est précédé d'un signe

-
CaractèresSignification
x(?=y) +

+ Correspond à 'x' seulement s'il est suivi de 'y'. On appelle cela un + test de succession (lookahead). +

+

+ Ainsi, /Jack(?=Sparrow)/ correspond à 'Jack' seulement + s'il est suivi de 'Sparrow'. + /Jack(?=Sparrow|Bauer)/ correspond à 'Jack' seulement + s'il est suivi de 'Sparrow' ou de 'Bauer'. Cependant, ni 'Sparrow' ni + 'Bauer' ne feront partie de la correspondance. +

+
x(?!y) +

Correspond à 'x' seulement si 'x' n'est pas suivi de 'y'.

+

+ Ainsi, /\d+(?!\.)/ correspond à un nombre qui n'est pas + suivi par un point, cette expression utilisée avec + la chaîne 3.141 correspondra pour '141' mais pas pour + '3.141'. +

+
(?<=y)x +

+ Correspond à x seulement si + x est précédé par y. C'est ce qu'on appelle une recherche arrière (lookbehind). +

+

+ Ainsi /(?<=Jack)Sprat/ correspond à "Sprat" + seulement s'il est précédé de "Jack".
/(?<=Jack|Tom)Sprat/ + correspond à "Sprat" seulement s'il est précédé de "Jack" ou "Tom".
Toutefois, + "Jack" et "Tom" ne feront pas partie de la correspondance. +

+
(?<!y)x +

+ Correspond à x uniquement si + x n'est pas précédé par + y (parfois appelée en anglais + negated lookbehind). +

+

+ Ainsi, /(?<!-)\d+/ correspondra à un nombre + seulement si celui-ci n'est pas précédé d'un signe moins.
/(?<!-)\d+/.exec('3') + cible "3".
 /(?<!-)\d+/.exec('-3')  ne trouve + aucune correspondance car le nombre est précédé d'un signe +

+
-

Exemples

+## Exemples -

Assertion avant (lookahead)

+### Assertion avant (_lookahead_) -
let regex = /Premier(?= test)/g;
+```js
+let regex = /Premier(?= test)/g;
 
 console.log('Premier test'.match(regex)); // [ 'Premier' ]
 console.log('Premier truc'.match(regex)); // null
 console.log("Voici le Premier test de l'année.".match(regex)); // [ 'Premier' ]
 console.log('Voici le Premier truc du mois.'.match(regex)); // null
-
+``` -

Assertion avant négative

+### Assertion avant négative -

L'expression rationnelle /\d+(?!\.)/ permettra de rechercher plusieurs chiffres si ceux-ci ne sont pas suivis d'un point décimal. Ainsi, /\d+(?!\.)/.exec('3.141') trouvera la sous-chaîne "141" mais pas "3."

+L'expression rationnelle `/\d+(?!\.)/` permettra de rechercher plusieurs chiffres si ceux-ci ne sont pas suivis d'un point décimal. Ainsi, `/\d+(?!\.)/.exec('3.141')` trouvera la sous-chaîne "141" mais pas "3." -
console.log(/\d+(?!\.)/g.exec('3.141')); // [ '141', index: 2, input: '3.141' ]
-
+```js +console.log(/\d+(?!\.)/g.exec('3.141')); // [ '141', index: 2, input: '3.141' ] +``` -

Signification différente de '?!' entre les assertions et les intervalles

+### Signification différente de `'?!'` entre les assertions et les intervalles -

La combinaison de caractères ?! a un sens différent entre les assertions /x(?!y)/ et les intervalles [^?!].

+La combinaison de caractères `?!` a un sens différent entre les [assertions](/fr/docs/Web/JavaScript/Guide/Expressions_régulières/Assertions) `/x(?!y)/` et les [intervalles](/fr/docs/Web/JavaScript/Guide/Expressions_régulières/Groupes_et_intervalles) `[^?!]`. -
let orangePasCitron = "Voulez-vous avoir une orange? Oui, je ne veux pas avoir de citron!";
+```js
+let orangePasCitron = "Voulez-vous avoir une orange? Oui, je ne veux pas avoir de citron!";
 
 let choixPasCitron = /[^?!]+avoir(?! un citron)[^?!]+[?!]/gi
 console.log(orangePasCitron.match(choixPasCitron)); // [ 'Voulez-vous avoir une orange?' ]
 
 let choixPasOrange = /[^?!]+avoir(?! une orange)[^?!]+[?!]/gi
 console.log(orangePasCitron.match(choixPasOrange)); // [ 'Oui, je ne veux pas avoir de citron!' ]
-
+``` -

Assertion arrière (lookbehind)

+### Assertion arrière (_lookbehind_) -
let oranges = ['espèce orange A ', 'sorte orange B', 'espèce orange C',];
+```js
+let oranges = ['espèce orange A ', 'sorte orange B', 'espèce orange C',];
 
-let especesOranges = oranges.filter( fruit => fruit.match(/(?<=espèce )orange/));
+let especesOranges = oranges.filter( fruit => fruit.match(/(?<=espèce )orange/));
 console.log(especesOranges); // [ 'espèce orange A ', 'espèce orange C' ]
-
+``` -- cgit v1.2.3-54-g00ecf