Si hallas algún error en tu código o proyecto, recuerda probar siempre en un ambiente de testing antes añadir el código al trabajo final.
Solución:
Mientras que todos los demás tienen razón en general (que b
es un límite de palabra), b
lo hace retroceso medio dentro de las clases de caracteres:
[b]
De hecho, esto coincidirá con un carácter de retroceso. Es solo un carácter de control ASCII que puede aparecer en el texto (código ASCII 8 o 10 en octal). Supongo que se usa principalmente por razones heredadas, para agregar signos diacríticos (por ejemplo, podría hacer a
retroceso, ´
Llegar á
). Hoy en día, estos han sido reemplazados en su mayoría por marcas de combinación Unicode.
Como un string contener un retroceso finalmente Mira depende del software que lo renderice. Es probable que las consolas aún muevan el cursor hacia atrás y sobrescriban lo que estaba allí si el retroceso es seguido por otros caracteres nuevos. Para ver esto, inicie una consola de secuencias de comandos interactiva (como node.js si desea probarlo en JavaScript) y ejecute
> console.log("abcbbdef")
adef
Tenga en cuenta que, si hubiera omitido def
solo obtendrías abc
, porque el retroceso en sí no borra nada. Solo mueve el cursor hacia atrás.
Por otro lado, su navegador podría simplemente ignorarlo en un campo de entrada. Por ejemplo, consulte un convertidor Unicode, ingrese la entrada de JavaScript abcbbdef
en la entrada inferior izquierda, presione “convertir”, y la salida “Caracteres” no tendrá el bc
borrado.
De paso b
ser un retroceso en las clases de caracteres no es exclusivo de JavaScript, sino que se interpreta de esta manera en la mayoría de los tipos de expresiones regulares.
Otras lecturas:
- El carácter de escape “retroceso” ‘b’ en C, ¿comportamiento inesperado?
- Usar el carácter de retroceso para eliminar un carácter en la consola
- Buena vieja Wikipedia
Dentro del contexto de una expresión regular (fuera de una clase de caracteres) b
no significa retroceso; significa ‘límite de palabra’. Hay muchos usos para ello. Por ejemplo,
/bwordb/
coincidirá some word
pero no someword
.
Como m.mantequilla te señala pueden utilícelo para hacer coincidir un carácter de retroceso, si lo coloca dentro de una clase de carácter. Por ejemplo:
var input = "this is a btest.";
/[b]/.test(input); // true