Assertions - JavaScript | MDN

Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Assertions

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

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

Exemples

>

Assertion avant (lookahead)

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

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."

js
console.log(/\d+(?!\.)/g.exec("3.141")); // [ '141', index: 2, input: '3.141' ]

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 [^?!].

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)

js
let oranges = ["espèce orange A ", "sorte orange B", "espèce orange C"];

let especesOranges = oranges.filter((fruit) =>
  fruit.match(/(?<=espèce )orange/),
);
console.log(especesOranges); // [ 'espèce orange A ', 'espèce orange C' ]