Il confine di parola \b è un test, proprio come ^ e $.
Quando lâinterprete delle regexp (il modulo software che cerca allâinterno delle espressioni regolari) incontra \b, verifica se la posizione nella stringa sia un confine di parola.
Ci sono tre differenti posizioni che qualificano il confine di parola:
- Ad inizio stringa, se il primo carattere di essa è un carattere di parola
\w. - Tra due caratteri di una stringa, laddove il primo sia un carattere di parola
\we lâaltro no. - A fine stringa, se lâultimo carattere è un carattere di parola
\w.
Ad esempio, la regexp \bJava\b troverà corrispondenza in Hello, Java!, dove Java è una parola a sé, ma non troverà alcuna corrispondenza in Hello, JavaScript!.
alert( "Hello, Java!".match(/\bJava\b/) ); // Java
alert( "Hello, JavaScript!".match(/\bJava\b/) ); // null
Nella stringa Hello, Java! trovano riscontro in \b le seguenti posizioni:
Pertanto la corrispondenza con il pattern \bHello\b viene trovata perché:
- Allâinizio della stringa trova riscontro con il primo test
\b. - Successivamente identifica la parola
Hello. - Infine trova ancora corrispondenza con il test
\b, dal momento che la posizione corrente è tra unaoe una virgola.
Viene quindi individuato il pattern \bHello\b, ma non \bHell\b (perché non câè un confine di parola dopo la l) e non Java!\b (perché il punto esclamativo non è un carattere di parola \w, quindi non câè confine di parola dopo di esso).
alert( "Hello, Java!".match(/\bHello\b/) ); // Hello
alert( "Hello, Java!".match(/\bJava\b/) ); // Java
alert( "Hello, Java!".match(/\bHell\b/) ); // null (nessuna corrispondenza)
alert( "Hello, Java!".match(/\bJava!\b/) ); // null (nessuna corrispondenza)
Possiamo usare \b anche con i numeri non solo con le parole.
Il pattern \b\d\d\b, ad esempio, cerca due caratteri numerici a sé stanti. In altre parole, cerca un numero di due cifre delimitato da caratteri differenti da \w, come spazi o punteggiatura (o lâinizio/la fine della stringa).
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
\b funziona solo con lâalfabeto latinoIl test di confine parola \b controlla che ci sia \w da un lato della posizione e che non ci sia \w dallâaltro lato.
Ma \w significa una lettera dellâalfabeto latino a-z (o un numero o un underscore), pertanto il test non è efficace per altri caratteri, es. caratteri cirillici o simboli grafici.
Commenti
<code>, per molte righe â includile nel tag<pre>, per più di 10 righe â utilizza una sandbox (plnkr, jsbin, codepenâ¦)