Con JavaScript, me gustaría eliminar todos los caracteres de una cadena que no sean números, letras y espacios en blanco. Así que elimine caracteres como '%#$&@* para que algo así como:

¡El jugador tiene que * jugar! #solo digo

Se convertiría:

Las jugadoras tienen que jugar justsaying

¿Cómo puedo hacer esto, no estoy segura de regex.

3
Holly 13 ene. 2017 a las 18:52

6 respuestas

La mejor respuesta

Como dijo @ chris85, puede usar la expresión regular [^0-9a-z-A-Z] para reemplazar todos los caracteres que no son letras, números o espacios en blanco.

Aquí hay una función que hará lo que quieras:

function clean(str) {
    return str.replace(/[^0-9a-z-A-Z ]/g, "").replace(/ +/, " ")
}

La segunda llamada de reemplazo es necesaria para eliminar las ejecuciones de espacios en blanco adicionales que se realizan al eliminar un carácter que se encuentra entre espacios.

4
BookOwl 14 ene. 2017 a las 19:31

Así es como podrías hacer coincidir los personajes que estás interesado en eliminar ...

[^\d\w\s]

NB: Que deberías usar el modificador global

Probado aquí: https://regex101.com/r/yilfcn/1 Consulte esta publicación sobre cómo aplicarla: javascript regexp elimina todos los caracteres especiales

0
Community 23 may. 2017 a las 11:45

Utilice replace

string.replace(/[^A-Z\d\s]/gi, '')

Tenga en cuenta las dos banderas al final de la expresión regular

g: significa global y significa que se encontrarán todas las instancias de la expresión regular

i: significa mayúsculas y minúsculas. Eso significa que coincidirá con minúsculas y mayúsculas

Jugando con su cadena, devuelve esta salida

"Players got to  play justsaying"

Para transformar dos o más caracteres de espacio en blanco en un solo espacio en blanco, puede obtener otro método replace para los existentes.

string.replace(/[^A-Z\d\s]/gi, '').replace(/\s+/g, ' ')

La clave aquí es el carácter +, que encuentra uno o más.

Probablemente sea posible hacerlo de manera más eficiente, pero soy un aficionado en Regex.

3
Richard Hamilton 13 ene. 2017 a las 16:08

También agregué el signo ' a regex porque tienes la palabra Player's, así que aquí mi código:

var str = "Player's got to * play! #justsaying";
var result = str.replace(/[^a-z\d\s']/gi, '');
1
V. Kovpak 13 ene. 2017 a las 16:02

TEXTO ORIGINAL

Player's got to * play! #justsaying

REGEXP

([^a-zA-Z0-9\s])

RESULTADO

Players got to  play justsaying

PRUÉBELO

const regex = /([^a-zA-Z0-9\s])/gm;
const str = `Player's got to * play! #justsaying`;
const subst = ``;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log(result);

Ver: https://regex101.com/r/BYSDwz/4

1
Eduardo Lynch Araya 13 ene. 2017 a las 15:58

Pruebe con

var text = "Player's got to * play! #justsaying";
var result = text.replace(/[^A-Z\d\s]/gi,'');
console.log(result);

Leer más aquí: https://developer.mozilla.org/en-US/ docs / Web / JavaScript / Guide / Regular_Expressions

0
Diego Peinador 13 ene. 2017 a las 15:58