Assertion de limite d'entrée : ^, $
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
Une assertion de limite d'entrée (input boundary assertion en anglais) vérifie si la position actuelle dans la chaîne de caractères est une limite d'entrée. Une limite d'entrée est le début ou la fin de la chaîne de caractères ; ou, si l'indicateur m est défini, le début ou la fin d'une ligne.
Note :
Pour faire correspondre le début et la fin de l'ensemble de la chaîne de caractères en mode m, utilisez les assertions de limite de tampon \A, \z et \Z.
Syntaxe
^
$
Description
^ vérifie que la position actuelle est le début de l'entrée. $ vérifie que la position actuelle est la fin de l'entrée. Les deux sont des assertions, donc elles ne consomment aucun caractère.
Plus précisément, ^ vérifie que le caractère à gauche est en dehors des limites de la chaîne de caractères ; $ vérifie que le caractère à droite est en dehors des limites de la chaîne de caractères. Si l'indicateur m est défini, ^ correspond également si le caractère à gauche est un terminateur de ligne, et $ correspond également si le caractère à droite est un terminateur de ligne.
Sauf si l'indicateur m est défini, ces assertions n'ont de sens que lorsqu'aucun caractère n'est attendu à gauche ou à droite d'elles. Par exemple, f^o ne correspond jamais, car il n'est pas possible que ^ soit à la fois au début de la chaîne de caractères et qu'il y ait un caractère à sa gauche.
Ces assertions ne modifient pas les emplacements de correspondance lorsque le marqueur y est utilisé — voir également l'indicateur d'adhérence ancré.
Exemples
>Supprimer les barres obliques finales
L'exemple suivant supprime les barres obliques finales d'une chaîne de caractères d'URL :
function supprimerBarreObliqueFinale(url) {
return url.replace(/\/$/, "");
}
supprimerBarreObliqueFinale("https://example.com/"); // "https://example.com"
supprimerBarreObliqueFinale("https://example.com/docs/"); // "https://example.com/docs"
Faire correspondre les extensions de fichiers
L'exemple suivant vérifie les types de fichiers en faisant correspondre l'extension de fichier, qui se trouve toujours à la fin de la chaîne de caractères :
function estUneImage(nomDeFichier) {
return /\.(?:png|jpe?g|webp|avif|gif)$/i.test(nomDeFichier);
}
estUneImage("image.png"); // true
estUneImage("image.jpg"); // true
estUneImage("image.pdf"); // false
Faire correspondre l'ensemble de l'entrée
Parfois, vous voulez vous assurer que votre expression rationnelle correspond à l'ensemble de l'entrée, et pas seulement à une sous-chaîne de caractères de l'entrée. Par exemple, si vous déterminez si une chaîne de caractères est un identifiant valide, vous pouvez ajouter des assertions de limites d'entrée aux deux extrémités du motif :
function estUnIdentifiantValide(str) {
return /^[$_\p{ID_Start}][$_\p{ID_Continue}]*$/u.test(str);
}
estUnIdentifiantValide("toto"); // true
estUnIdentifiantValide("$1"); // true
estUnIdentifiantValide("1toto"); // false
estUnIdentifiantValide(" toto "); // false
Cette fonction est utile lors de la génération de code (générer du code en utilisant du code), car vous pouvez utiliser des identifiants valides différemment des autres propriétés de chaînes de caractères, telles que la notation par point au lieu de la notation entre crochets :
const variables = ["toto", "toto:truc", " toto "];
function pourAssignement(cle) {
if (estUnIdentifiantValide(cle)) {
return `globalThis.${cle} = undefined;`;
}
// JSON.stringify() échappe les guillemets et autres caractères spéciaux
return `globalThis[${JSON.stringify(cle)}] = undefined;`;
}
const instructions = variables.map(pourAssignement).join("\n");
console.log(instructions);
// globalThis.toto = undefined;
// globalThis["toto:truc"] = undefined;
// globalThis[" toto "] = undefined;
Spécifications
| Spécification |
|---|
| ECMAScript® 2027 Language Specification> # prod-Assertion> |