Saltar al contenido

La barra invertida de JavaScript () en las variables está causando un error

La guía paso a paso o código que encontrarás en este post es la solución más rápida y válida que encontramos a tus dudas o problema.

Solución:

La barra invertida () es un Personaje de escape en Javascript (junto con muchos otros lenguajes similares a C). Esto significa que cuando Javascript encuentra una barra invertida, intenta escapar del siguiente carácter. Por ejemplo, n es un carácter de nueva línea (en lugar de una barra invertida seguida de la letra n).

Para generar una barra invertida literal, debe escapar eso. Eso significa \ generará una sola barra invertida (y \\ generará dos, y así sucesivamente). La razón "aa ///" no funciona es porque la barra invertida se escapa del " (que imprimirá una cita literal), y por lo tanto su string no está debidamente terminado. Similar, "aa ///\" no funcionará, porque la última barra invertida nuevamente escapa de la cita.

Solo recuerde, para cada barra invertida que desee generar, debe proporcionar Javascript dos.

Es posible que desee probar lo siguiente, que es más o menos la forma estándar de escapar de la entrada del usuario:

function stringEscape(s) 
    return s ? s.replace(/\/g,'\\').replace(/n/g,'\n').replace(/t/g,'\t').replace(/v/g,'\v').replace(/'/g,"\'").replace(/"/g,'\"').replace(/[x00-x1Fx80-x9F]/g,hex) : s;
    function hex(c)  var v = '0'+c.charCodeAt(0).toString(16); return '\x'+v.substr(v.length-2); 

Esto reemplaza todas las barras invertidas con una barra invertida escapada y luego procede a escapar otros caracteres no imprimibles a su forma escapada. También evita las comillas simples y dobles, por lo que puede usar la salida como un string constructor incluso en eval (lo cual es una mala idea en sí mismo, considerando que está utilizando la entrada del usuario). Pero en cualquier caso, debería hacer el trabajo que desea.

Tienes que escapar de cada ser \:

var ttt = "aa ///\\\";

Actualizado: Creo que esta pregunta no es sobre el carácter de escape en string en absoluto. El autor de la pregunta no parece explicar el problema correctamente.

porque tuvo que mostrar un mensaje al usuario de que el usuario no puede dar un nombre que tenga el carácter ().

Creo que el escenario es como:

var user_input_name = document.getElementById('the_name').value;

Entonces el autor de la pregunta quiere comprobar si user_input_name contiene cualquier []. Si es así, avise al usuario.

Si el usuario ingresa [aa ///] en el cuadro de entrada HTML, entonces si alert(user_input_name)ya verás [aaa ///]. No necesita escapar, es decir, reemplazar [] ser [\] en código JavaScript. Cuando escapas, eso es porque estás tratando de hacer una string que contienen caracteres especiales en Código fuente JavaScript. Si no lo hace, no se analizará correctamente. Como ya tienes un string, no necesita pasarlo a una función de escape. Si lo hace, supongo que está generando otro código JavaScript a partir de un código JavaScript, pero no es el caso aquí.

Supongo que el autor de la pregunta quiere simular la entrada, para que podamos entender el problema. Desafortunadamente, el autor de la pregunta no entiende bien JavaScript. Por lo tanto, se nos proporciona un código de error de sintaxis:

var ttt = "aa ///";

Por lo tanto, asumimos que el autor de la pregunta tiene problemas para escapar.

Si desea simular, su código debe ser válido en primer lugar.

var ttt = "aa ///\"; // <- This is correct
// var ttt = "aa ///"; // <- This is not.

alert(ttt); // You will see [aa ///] in dialog, which is what you expect, right?

Ahora, solo tienes que hacer es

var user_input_name = document.getElementById('the_name').value;
if (user_input_name.indexOf("\") >= 0)  // There is a [] in the string
  alert("\ is not allowed to be used!"); // User reads [ is not allowed to be used]
  do_something_else();
  

Editar: Solía [] para citar el texto que se mostrará, por lo que sería menos confuso que usar "".

Puntuaciones y reseñas

Si estás contento con lo expuesto, eres capaz de dejar un artículo acerca de qué te ha impresionado de este ensayo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *