Soy un novato con expresiones regulares y tengo problemas para tratar de hacer coincidir algunas partes de una cadena para poder eliminarla de una parte del texto ingresado. Quiero hacer coincidir los dígitos seguidos de una secuencia de una combinación de cualquier carácter especial + espacios. También podría haber caracteres no latinos que no deberían eliminarse dentro de la secuencia (por ejemplo, Ñ).
por ejemplo, ingresado puede verse así:
11@- &-.text 11 $ab*cÑ .somewords123emitido que esperaría
text abcÑsomewrods123Estoy usando el método de reemplazo de javascript con expresiones regulares para encontrarlo. Hasta ahora tengo algo básico como esta expresión regular
.replaceAll(/\d+(\@|\s)+(\-|\$)+(\s|\&)+(\&)+(\-)+(\.)/g, '');¿Hay alguna manera de escribir esto de manera más eficiente para que capture cualquier carácter especial ya que el texto puede contener más caracteres especiales diferentes que en los ejemplos? ¿O es esta una situación que se maneja mejor con JS puro?
Gracias de antemano por tu ayuda.
Debería tener una lista negra de lo que llama caracteres especiales o una lista blanca de los caracteres permitidos.
para la lista negra se verá así:
const blacklist = "!@#$%^&*()_+."; const exampleInputs = [ "te&*st+_1.", "te%%st^*2", "t@@@es*(*(*t3" ]; function removeSpecialChars(str) { const reg = new RegExp(`[${blacklist}]`, "g"); return str.replace(reg, ""); } exampleInputs.forEach(input => console.log(removeSpecialChars(input)));para la lista blanca se verá así:
const whitelist = "0-9a-zA-Z"; const exampleInputs = [ "te&*st+_1.", "te%%st^*2", "t@@@es*(*(*t3" ]; function removeSpecialChars(str) { const reg = new RegExp(`[^${whitelist}]`, "g"); return str.replace(reg, ""); } exampleInputs.forEach(input => console.log(removeSpecialChars(input)));