javascript - soljson - smart contracts ethereum
La cadena de Javascript reemplaza con expresiones regulares para quitar los caracteres ilegales (4)
Lo que necesitas son clases de personajes . En eso, solo tienes que preocuparte por los caracteres ]
, /
y -
(y ^
si lo estás colocando directamente después del comienzo de la clase de caracteres " [
").
Sintaxis: [
personajes ]
donde personajes es una lista con caracteres.
Ejemplo:
var cleanString = dirtyString.replace(/[|&;$%@"<>()+,]/g, "");
Necesita una función para quitar un conjunto de caracteres ilegales en javascript: |&;$%@"<>()+,
Este es un problema clásico que debe resolverse con expresiones regulares, lo que significa que ahora tengo 2 problemas .
Esto es lo que tengo hasta ahora:
var cleanString = dirtyString.replace(//|&;/$%@"<>/(/)/+,/g, "");
Estoy escapando de los caracteres especiales de expresiones regulares con una barra diagonal inversa, pero estoy teniendo dificultades para tratar de entender lo que está pasando.
Si intento con literales individuales en aislamiento, la mayoría de ellos parece funcionar, pero una vez que los junté en la misma expresión regular, dependiendo del orden, el reemplazo está roto.
es decir, esto no funcionará -> dirtyString.replace(//|<>/g, ""):
Ayuda apreciada!
Necesitas envolverlos a todos en una clase de personaje. La versión actual significa reemplazar esta secuencia de caracteres con una cadena vacía. Cuando se envuelve entre corchetes, significa reemplazar cualquiera de estos caracteres con una cadena vacía.
var cleanString = dirtyString.replace(/[/|&;/$%@"<>/(/)/+,]/g, "");
Ponlos entre paréntesis []
:
var cleanString = dirtyString.replace(/[/|&;/$%@"<>/(/)/+,]/g, "");
Tiendo a mirarlo desde la perspectiva inversa que puede ser lo que pretendías:
¿Qué personajes quiero permitir?
Esto se debe a que podría haber muchos personajes que forman parte de una cadena de algún modo que explota cosas que no esperarías.
Por ejemplo, este solo permite que letras y números eliminen grupos de caracteres inválidos reemplazándolos por un hypen:
"This¢£«±Ÿ÷could&*()//<>be!@#$%^bad".replace(/([^a-z0-9]+)/gi, ''-'');
//Result: "This-could-be-bad"