Un límite de palabra \b es una prueba, al igual que ^ y $.
Cuando el motor regex (módulo de programa que implementa la búsqueda de expresiones regulares) se encuentra con \b, comprueba que la posición en la cadena es un límite de palabra.
Hay tres posiciones diferentes que califican como límites de palabras:
- Al comienzo de la cadena, si el primer carácter de cadena es un carácter de palabra
\w. - Entre dos caracteres en la cadena, donde uno es un carácter de palabra
\wy el otro no. - Al final de la cadena, si el último carácter de la cadena es un carácter de palabra
\w.
Por ejemplo, la expresión regular \bJava\b se encontrará en Hello, Java!, donde Java es una palabra independiente, pero no en Hello, JavaScript!.
alert( "Hello, Java!".match(/\bJava\b/) ); // Java
alert( "Hello, JavaScript!".match(/\bJava\b/) ); // null
En la cadena Hello, Java! las flechas que se muestran corresponden a \b, ver imagen:
Entonces, coincide con el patrón \bHello\b, porque:
- Al comienzo de la cadena coincide con la primera prueba:
\b. - Luego coincide con la palabra
Hello. - Luego, la prueba
\bvuelve a coincidir, ya que estamos entreoy una coma.
El patrón \bHello\b también coincidiría. Pero no \bHel\b (porque no hay límite de palabras después de l) y tampoco Java!\b (porque el signo de exclamación no es un carácter común \w, entonces no hay límite de palabras después de eso).
alert( "Hello, Java!".match(/\bHello\b/) ); // Hello
alert( "Hello, Java!".match(/\bJava\b/) ); // Java
alert( "Hello, Java!".match(/\bHell\b/) ); // null (sin coincidencia)
alert( "Hello, Java!".match(/\bJava!\b/) ); // null (sin coincidencia)
Podemos usar \b no solo con palabras, sino también con dígitos.
Por ejemplo, el patrón \b\d\d\b busca números independientes de 2 dígitos. En otras palabras, busca números de 2 dígitos que están rodeados por caracteres diferentes de \w, como espacios o signos de puntuación (o texto de inicio/fin).
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 no funciona para alfabetos no latinosLa prueba de límite de palabra \b verifica que debe haber un \w en un lado de la posición y “no \w”- en el otro lado.
Pero \w significa una letra latina a-z (o un dígito o un guión bajo), por lo que la prueba no funciona para otros caracteres, p.ej.: letras cirílicas o jeroglíficos.
Comentarios
<code>, para varias líneas – envolverlas en la etiqueta<pre>, para más de 10 líneas – utilice una entorno controlado (sandbox) (plnkr, jsbin, codepen…)