String.startsWith() en JavaScript : tester le début d'une chaîne

startsWith répond vrai quand une chaîne commence par le texte donné. endsWith fait la même chose à l'autre bout, casse comprise.
3 min de lecture
Believemy logo

Une adresse commence-t-elle par https://, un chemin par /admin, un rôle par ROLE_ : ces vérifications se font des dizaines de fois dans une application, souvent au moment de décider qui a le droit de voir quoi.

startsWith et son symétrique endsWith répondent par vrai ou faux, sans détour par un index à comparer.


Définition

startsWith(texte) rend true quand la String (chaîne de caractères) commence exactement par le texte donné. endsWith(texte) fait la même vérification à la fin.

JAVASCRIPT
const url = "https://believemy.com/fr/glossaires";

console.log(url.startsWith("https://"));  // true
console.log(url.startsWith("http://"));   // false
console.log(url.endsWith("/glossaires")); // true

console.log("rapport.pdf".endsWith(".pdf"));  // true

Les deux méthodes rendent toujours un booléen, ce qui les rend directement utilisables dans un if ou dans un Array.filter().


La casse compte, et la position se règle

La comparaison est exacte. Une majuscule de différence suffit à obtenir false, ce qui est souhaitable sur un préfixe technique et gênant sur du texte saisi.

JAVASCRIPT
console.log("Bonjour".startsWith("bonjour"));  // false
console.log("Bonjour".toLowerCase().startsWith("bonjour"));  // true

console.log("abcdef".startsWith("cd", 2));  // true, on démarre à l'index 2
Bon à savoir

Le second argument de startsWith déplace le point de départ, celui de endsWith fait l'inverse : il indique où considérer que la chaîne se termine. "abcdef".endsWith("cd", 4) rend donc true, puisque seuls les quatre premiers caractères sont examinés.


Où ces méthodes servent vraiment

  • Sécuriser une redirection en vérifiant que l'adresse commence par votre domaine, plutôt que de la suivre les yeux fermés.
  • Router une requête en testant si le chemin commence par /admin ou par un code de langue.
  • Filtrer des fichiers avec endsWith sur l'extension, ce qui reste plus lisible qu'un découpage sur le point.
  • Reconnaître un préfixe métier comme ROLE_ ou cus_, très fréquent dans les identifiants d'API.
JAVASCRIPT
const fichiers = ["cours.pdf", "notes.txt", "facture.pdf"];
console.log(fichiers.filter((f) => f.endsWith(".pdf")));  // [ 'cours.pdf', 'facture.pdf' ]


Questions fréquentes

Question

startsWith ou indexOf(texte) === 0 ?

Le résultat est le même, la lisibilité ne l'est pas. startsWith dit ce qu'il fait, là où la comparaison à zéro demande un temps de lecture et se prête aux inversions de logique décrites dans indexOf(). La forme ancienne ne se justifie plus que sur des environnements très anciens.


Question

Peut-on lui passer une expression régulière ?

Non, et l'erreur est explicite : une TypeError est levée si le premier argument est une RegExp. Pour tester un début avec un motif, utilisez la méthode test de l'expression, avec l'ancre ^ qui signifie « début de chaîne ».


Question

Comment tester plusieurs préfixes d'un coup ?

En posant la liste dans un tableau et en interrogeant avec Array.some() : prefixes.some((p) => chemin.startsWith(p)). La même écriture avec every vérifierait que tous les préfixes correspondent, ce qui n'a évidemment pas de sens ici, un seul début étant possible.

Termes connexes

Découvrez notre glossaire JavaScript

Tous les mots de JavaScript expliqués simplement : mots-clés, objets natifs, méthodes, erreurs et concepts. Définitions claires et exemples qui tournent, pour apprendre et pour se dépanner.

Partager cet article

Tu veux nous aider ? Fais un lien vers cet article sur tes réseaux ou encore mieux : sur ton site, dans un article ou dans ta newsletter.