--- title: Assertions slug: Web/JavaScript/Guide/Expressions_régulières/Assertions tags: - Assertions - Guide - JavaScript - RegExp translation_of: Web/JavaScript/Guide/Regular_Expressions/Assertions ---
{{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).
Note : Le caractère ?
peut également être utilisé comme quantificateur.
Caractères | Signification |
---|---|
x(?=y) |
Correspond à 'x' seulement s'il est suivi de 'y'. On appelle cela un test de succession (lookahead). Ainsi, |
x(?!y) |
Correspond à 'x' seulement si 'x' n'est pas suivi de 'y'. Ainsi, |
(?<=y)x |
Correspond à Ainsi / |
(?<!y)x |
Correspond à Ainsi, |
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
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' ]
'?!'
entre les assertions et les intervallesLa combinaison de caractères ?!
a un sens différent entre les assertions /x(?!y)/
et les intervalles [^?!]
.
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!' ]
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' ]