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

Assertion de limite de mot : \b, \B

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 de mot (word boundary assertion en anglais) vérifie si la position actuelle dans la chaîne de caractères est une limite de mot. Une limite de mot se situe là où le caractère suivant est un caractère de mot et le caractère précédent ne l'est pas, ou inversement.

Syntaxe

regex
\b
\B

Description

\b vérifie que la position actuelle dans la chaîne de caractères est une limite de mot. \B nie l'assertion : elle vérifie que la position actuelle n'est pas une limite de mot. Les deux sont des assertions, donc contrairement à d'autres échappements de caractères ou échappements de classes de caractères, \b et \B ne consomment aucun caractère.

Un caractère de mot inclut les éléments suivants :

  • Les lettres (A-Z, a-z), les chiffres (0-9) et le caractère de soulignement (_).
  • Si l'expression rationnelle est sensible à l'Unicode et que le drapeau i est défini, d'autres caractères Unicode qui sont canoniquement transformés en l'un des caractères ci-dessus par la normalisation de casse (angl.).

Les caractères de mot sont également reconnus par l'échappement de classe de caractères \w.

Les positions d'entrée hors limites sont considérées comme des caractères non-mots. Par exemple, les correspondances suivantes réussissent :

js
/\ba/.exec("abc");
/c\b/.exec("abc");

/\B /.exec(" abc");
/ \B/.exec("abc ");

Exemples

Détecter des mots

L'exemple suivant détecte si une chaîne de caractères contient le mot « merci » ou « merci beaucoup » :

js
function estRemerciement(str) {
  return /\b(merci|merci beaucoup)\b/i.test(str);
}

estRemerciement("Merci ! Vous m'avez beaucoup aidé."); // true
estRemerciement(
  "Je tenais simplement à vous dire merci beaucoup pour tout le travail que vous avez accompli.",
); // true
estRemerciement("La fête de Thanksgiving approche à grands pas."); // false

Attention : Les limites de mot ne sont pas clairement définies dans toutes les langues. Si vous travaillez avec des langues comme le chinois ou le thaï, qui n'utilisent pas de séparateurs blancs, utilisez plutôt une bibliothèque plus avancée comme Intl.Segmenter pour rechercher des mots.

Spécifications

Spécification
ECMAScript® 2027 Language Specification
# prod-Assertion

Compatibilité des navigateurs

Voir aussi