Limite de mot : \b
Une limite de mot pattern:\b teste une position, de la même manière que les ancres pattern:^ et pattern:$.
Quand le moteur d'expression régulière (module qui implémente la recherche d'expressions régulières) trouve le motif pattern:\b, il vérifie si la position dans la chaine de caractères est une limite de mot.
Il y a trois positions possibles pour une limite de mot :
- Au début de la chaîne de caractères, si le premier caractère est alphanumérique (ou un trait de soulignement), c'est-à-dire qu'il correspond au motif
pattern:\w. - Entre deux caractères d'une chaîne, si seulement l'un des caractères correspond au motif
pattern:\w, (alphanumérique ou trait de soulignement). - À la fin de la chaîne de caractères, si le dernier caractère correspond au motif
pattern:\w.
Par exemple l'expression régulière pattern:\bJava\b sera trouvé dans subject:Hello, Java!, où subject:Java est un mot isolé, mais pas dans subject:Hello, JavaScript!.
alert( "Hello, Java!".match(/\bJava\b/) ); // Java
alert( "Hello, JavaScript!".match(/\bJava\b/) ); // null
Dans la chaîne subject:Hello, Java! les positions suivantes correspondent au motif pattern:\b:
Cette chaîne passe le test du motif pattern:\bHello\b, car :
- Le début de la chaîne passe le premier test
pattern:\b. - Puis trouve le mot
pattern:Hello. - Enfin le test
pattern:\best encore valide, comme nous sommes entresubject:oet une virgule.
Donc le motif pattern:\bHello\b sera trouvé, mais pas pattern:\bHell\b (car il n'y a pas de limite de mot après l) ni Java!\b (car le point d'exclamation ne correspond pas au motif pattern:\w, il n'est donc pas suivi par une limite de mot).
alert( "Hello, Java!".match(/\bHello\b/) ); // Hello
alert( "Hello, Java!".match(/\bJava\b/) ); // Java
alert( "Hello, Java!".match(/\bHell\b/) ); // null (aucune correspondance)
alert( "Hello, Java!".match(/\bJava!\b/) ); // null (aucune correspondance)
La limite de mot pattern:\b ne s'utilise pas uniquement pour des mots, mais aussi pour les nombres.
Par exemple, le motif pattern:\b\d\d\b recherche un nombre isolé à deux chiffres. C'est-à-dire, qu'il cherche un nombre à deux chiffres entouré par des caractères qui ne correspondent pas au motif pattern:\w, comme des espaces, une ponctuation, un début ou une fin de chaîne.
alert( "1 23 456 78".match(/\b\d\d\b/g) ); // 23,78
alert( "12,34,56".match(/\b\d\d\b/g) ); // 12,34,56
pattern:\b ne fonctionne pas pour des alphabets non latinLe test de limite de mot `pattern:\b` vérifie qu'il doit y avoir `pattern:\w` d'un côté de la position et "not `pattern:\w`" - de l'autre côté.
Comme `pattern:\w` signifie `a-z`(en minuscule ou majuscule), un chiffre ou un trait de soulignement, le test ne fonctionne pas pour d'autres caractères, p. ex. lettre cyrillique ou idéogramme.