W3docs

Délimiteur de mot JavaScript (\b) dans les expressions régulières

En JavaScript, l'ancre \b dans les expressions régulières correspond aux délimiteurs de mots, entre un caractère de mot (\w) et un non-mot.

Introduction aux délimiteurs de mots

En JavaScript, dans les expressions régulières, l'ancre \b est utilisée pour correspondre aux délimiteurs de mots. Un délimiteur de mot est une position entre un caractère de mot (défini par la classe de caractères \w, qui inclut [a-zA-Z0-9_]) et un caractère non-mot (tout ce qui n'est pas un caractère de mot). Cela permet une correspondance précise de mots entiers et s'avère particulièrement utile pour des tâches telles que la recherche, le remplacement ou la validation de modèles de mots spécifiques dans un texte.

\b est l'une des ancres des expressions régulières. Contrairement aux ancres de début et de fin de chaîne ^ et $, qui ancrent une correspondance aux extrémités de la saisie, \b l'ancre aux extrémités d'un mot — un seul modèle peut ainsi correspondre à des mots entiers n'importe où dans une chaîne.

Ce chapitre couvre ce qui constitue un délimiteur de mot, le fonctionnement de l'ancre opposée \B, la nature à largeur nulle des deux, les modèles courants de correspondance de mots entiers, et les limitations rencontrées avec du texte Unicode.

Utilisation de l'ancre \b

L'ancre \b est une assertion à largeur nulle : elle correspond à une position, pas à un caractère. La position doit se situer entre un caractère de mot (qu'il appartient à \w : [a-zA-Z0-9_]) et un caractère non-mot — ou entre un caractère de mot et le tout début ou la toute fin de la chaîne. Comme elle est à largeur nulle, \b ne consomme rien ; elle contraint seulement l'endroit où le reste du modèle est autorisé à correspondre.

Il existe trois emplacements où un délimiteur de mot se produit :

  • Avant le premier caractère, si ce caractère est un caractère de mot.
  • Après le dernier caractère, si ce caractère est un caractère de mot.
  • Entre deux caractères adjacents dont exactement l'un est un caractère de mot.

L'ancre complémentaire \B correspond à chaque position qui n'est pas un délimiteur de mot.

Pour voir où les délimiteurs se situent réellement, insérez un marqueur à chaque position \b :

javascript— editable

Explication : Les quatre délimiteurs sont : avant a, après c (à côté de l'espace), avant d, et après f (fin de chaîne). Le passage espace-vers-espace n'a pas de délimiteur car aucun des deux côtés n'est un caractère de mot.

Exemple : Correspondance de mots entiers

javascript— editable

Explication :

  • L'expression régulière /\bcat\b/ correspond au mot "cat" en tant que mot entier.
  • Dans la chaîne 'The cat is here.', "cat" est un mot séparé, donc la correspondance est true.
  • Dans la chaîne 'The caterpillar is here.', "cat" fait partie du mot "caterpillar", donc la correspondance est false.

Exemple : Recherche de mots entiers dans un texte

javascript— editable

Explication :

  • L'expression régulière /\bcat\b/g trouve toutes les occurrences de "cat" en tant que mot entier dans le texte.
  • Elle ne correspond qu'à "cat", et non à "scatter", "caterpillar" ou "catfish", car "cat" n'est pas un mot séparé dans ces contextes.
  • Le résultat est un array contenant ["cat"].

Délimiteurs de non-mots (\B)

\B est l'exact opposé de \b : il correspond à toute position qui n'est pas un délimiteur de mot. Cela signifie qu'il réussit au milieu d'un mot (entre deux caractères de mot) ou entre deux caractères non-mots, et échoue là où \b réussirait.

Utilisez \B lorsque vous souhaitez faire correspondre un modèle uniquement lorsqu'il est intégré à l'intérieur d'un mot plus grand.

javascript— editable

Explication :

  • /\Boo\B/g exige un non-délimiteur des deux côtés de oo.
  • Dans 'noon', le oo a n des deux côtés, donc les deux assertions \B sont vérifiées — il y a correspondance.
  • Dans 'zoo', le oo se trouve à la fin du mot, donc un vrai délimiteur de mot est présent et \B échoue. Seul le oo de 'noon' est retourné.

Un moyen pratique de retenir la relation : en chaque position, exactement l'un de \b et \B correspond.

Applications pratiques

Validation de champs de saisie

Les délimiteurs de mots peuvent être utiles pour valider des champs de saisie où des correspondances de mots exactes sont requises.

javascript— editable

Explication :

  • L'expression régulière /^\w+$/ garantit que la saisie est un seul mot sans espaces.
  • ^ affirme le début de la chaîne, et $ affirme la fin. Comme \w ne correspond qu'aux caractères de mot, ^ et $ appliquent implicitement des délimiteurs de mots, rendant \b redondant ici.
  • \w+ correspond à un ou plusieurs caractères de mot (y compris les lettres, les chiffres et les underscores).
  • 'user123' correspond car c'est un seul mot sans espaces.
  • 'user 123' ne correspond pas car il contient un espace, qui interrompt la séquence de caractères de mot.
  • Notez que \w inclut les underscores, ce qui peut affecter la logique de validation si vous souhaitez les exclure.

Extraction de mots d'une phrase

Vous pouvez extraire des mots spécifiques d'une phrase à l'aide de délimiteurs de mots.

javascript— editable

Explication :

  • Le modèle d'expression régulière /\btest\w*\b/gi correspond à tout mot commençant par "test".
  • Le drapeau g garantit que toutes les correspondances dans la chaîne sont retournées.
  • Le drapeau i garantit que la correspondance est insensible à la casse, de sorte qu'elle correspond à la fois à "test" et à "Testing".
  • Le résultat est ["test", "Testing"], car les deux mots commencent par "test" et sont suivis de zéro ou plusieurs caractères de mot.

Combinaison des délimiteurs de mots avec d'autres modèles

Les délimiteurs de mots peuvent être combinés avec d'autres modèles d'expressions régulières pour des correspondances plus complexes.

Exemple : Recherche de mots avec un préfixe

javascript— editable

Explication :

  • L'expression régulière /\bpre\w*\b/g correspond aux mots commençant par le préfixe "pre".
  • \bpre affirme un délimiteur de mot suivi de "pre".
  • \w* correspond à zéro ou plusieurs caractères de mot.
  • \b affirme un délimiteur de mot à la fin.
  • Le résultat est un array contenant ["preheat", "prefix", "prepare", "pressure"].

Exemple : Recherche de mots avec un suffixe spécifique

javascript— editable

Explication :

  • L'expression régulière /\w+ing\b/g correspond aux mots se terminant par "ing".
  • \w+ correspond à un ou plusieurs caractères de mot.
  • ing\b correspond à "ing" suivi d'un délimiteur de mot.
  • Le résultat est un array contenant ["running", "walking", "talking", "thinking"].
Info

Lorsque vous avez besoin de faire correspondre des mots entiers ou de vous assurer que des mots ne font pas partie de chaînes plus grandes, utilisez l'ancre \b pour définir précisément les délimiteurs de mots

Utiliser \b pour une correspondance précise de mots

javascript— editable

Explication :

  • L'expression régulière /\bdog\b/g correspond au mot "dog" en tant que mot entier.
  • Elle ne correspond pas à "dogs" car "dog" n'est pas un mot séparé dans ce contexte.
  • Le résultat est un array contenant ["dog"].

Exemple : Correspondance de nombres entiers

Les chiffres étant des caractères de mot, \b fonctionne aussi sur les nombres — utile pour extraire des entiers d'un texte mixte sans scinder sur un point décimal.

javascript— editable

Explication :

  • /\b\d+\b/g correspond aux suites de chiffres isolées entre des caractères non-chiffres.
  • 3.14 est découpé en "3" et "14" car le . est un caractère non-mot, donc un délimiteur de mot se trouve de chaque côté de lui.

Limitations avec Unicode

L'ancre \b est définie uniquement en termes de l'ensemble ASCII \w ([a-zA-Z0-9_]). Les lettres avec des signes diacritiques ou les caractères d'écritures non-latines sont traités comme des caractères non-mots, de sorte qu'un délimiteur apparaît à des endroits inattendus.

javascript— editable

Explication :

  • é ne fait pas partie de \w, donc le moteur voit un délimiteur de mot entre caf et é.
  • Le \b final après é s'attend à ce que é soit un caractère de mot — ce qu'il n'est pas — donc l'assertion entière échoue même si le texte contient clairement le mot "café".

JavaScript ne fournit pas de version de \b adaptée à Unicode (les drapeaux u et v n'en modifient pas la définition). Si vous avez besoin de faire correspondre des mots accentués ou non-latins en tant que mots entiers, construisez vos propres délimiteurs à partir d'une classe de caractères explicite, par exemple :

javascript— editable

Explication :

  • \p{L} (activé par le drapeau u) correspond à toute lettre Unicode.
  • Le lookbehind (?<![\p{L}]) et le lookahead (?![\p{L}]) recréent un délimiteur tenant compte des lettres, de sorte que café correspond mais pas cafés.
  • Il s'agit de la solution de contournement standard lorsque \b ASCII est trop restrictif pour votre alphabet.

Conclusion

L'ancre \b dans les expressions régulières JavaScript est un outil puissant pour faire correspondre des délimiteurs de mots. En utilisant cette ancre, vous pouvez créer des modèles précis et efficaces pour rechercher, remplacer et valider des mots dans un texte. Que vous travailliez sur des fonctionnalités de recherche, la validation de données ou le traitement de texte, comprendre et utiliser les délimiteurs de mots peut considérablement améliorer vos capacités en matière d'expressions régulières.

Pratique

Pratique
À quoi sert le délimiteur de mot '\b' en JavaScript ?
À quoi sert le délimiteur de mot '\b' en JavaScript ?
Was this page helpful?