es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo identificar y rechazar caracteres de Símbolos Alfanuméricos Matemáticos en Unicode, rango U+1D400 a U+1D7FF?

Me di cuenta de que un usuario ingresó el texto “𝙼𝚊𝚛𝚜𝚋𝚎𝚛𝚐” en nuestro formulario al completar su ciudad. Nos gustaría rechazar este tipo de texto en nuestro formulario. Intenté buscar durante un tiempo, pero no pude encontrar qué tipo de texto es y cómo puedo rechazarlo.

Al investigar más, la codificación de este texto arroja un resultado como: ‘%F0%9D%99%BC%F0%9D%9A%8A%F0%9D%9A%9B%F0%9D%9A%9C%F0%9D%9A%8B%F0%9D%9A%8E%F0%9D%9A%9B%F0%9D%9A%90’, pero parece que este texto está codificado en utf-8.

Mi conocimiento en este campo es limitado, ¿podría alguien por favor indicarme si hay alguna forma de bloquear este texto? ¿O qué tipo de cadena es?

Agradezco la ayuda. Actualizaré la pregunta para que tenga más sentido una vez que reciba una respuesta.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Según la salida codificada proporcionada, el texto de entrada en el formulario parece estar formado por caracteres Unicode codificados en UTF-8. Específicamente, parece ser una combinación de caracteres cirílicos y símbolos alfanuméricos matemáticos.

    Para rechazar dicho texto en un formulario, se podría utilizar un enfoque de definir una expresión regular que coincida solo con los tipos de entrada válidos para el campo de la ciudad (por ejemplo, letras, espacios, guiones), y rechazar cualquier entrada que no coincida con ese patrón. Aquí tienes un ejemplo de cómo se vería eso en JavaScript:

    const cityInput = document.getElementById("city-input");
    const cityRegex = /^[A-Za-z\s\-]+$/; // Solo permite letras, espacios y guiones
    cityInput.addEventListener("input", function() {
      const inputVal = cityInput.value.trim();
      if (!cityRegex.test(inputVal)) {
        cityInput.setCustomValidity("Entrada no válida. Por favor, introduce un nombre de ciudad válido."); // Establece un mensaje personalizado de validación
      } else {
        cityInput.setCustomValidity(""); // Borra el mensaje de validación
      }
    });
    

    Este código crea una expresión regular que coincide solo con letras, espacios y guiones, y adjunta un escuchador de eventos al campo de entrada de la ciudad. Cada vez que el usuario escriba en el campo, se comprueba si el valor de entrada cumple con el patrón de la expresión regular. Si no coincide, se establece un mensaje de validación personalizado en el campo, indicando que la entrada es inválida. Si coincide, se borra el mensaje de validación.

    Puedes modificar el patrón de la expresión regular para incluir otros caracteres permitidos según sea necesario. Ten en cuenta que este enfoque solo funciona para rechazar ciertos tipos de entrada basados en un patrón establecido. Si necesitas rechazar la entrada según una regla más compleja (como si contiene caracteres Unicode específicos), es posible que necesites utilizar un enfoque diferente.

Comments are closed.