2012-09-09 36 views

Respuesta

25

Puede utilizar expresiones regulares

myString.replace(/[^\w\s!?]/g,''); 

Esto reemplazará todo menos un carácter de palabra, el espacio, signo de exclamación, o pregunta.

Character Class: \w significa "carácter de palabra", por lo general [A-Za-z0-9_]. Observe la inclusión del subrayado y los dígitos.

\s significa "carácter de espacio en blanco". Incluye [ \t\r\n].

Si no desea el guión bajo, puede usar solo [A-Za-z0-9].

myString.replace(/[^A-Za-z0-9\s!?]/g,''); 

Para los caracteres Unicode, se puede añadir algo como \u0000-\u0080 a la expresión. Eso excluirá todos los caracteres dentro de ese rango Unicode. Deberá especificar el rango para los caracteres que no desea eliminar. Puede ver todos los códigos en Unicode Map. Simplemente agregue los caracteres que desea mantener o una variedad de caracteres.

Por ejemplo:

myString.replace(/[^A-Za-z0-9\s!?\u0000-\u0080\u0082]/g,''); 

Esto permitirá que todos los personajes mencionados anteriormente, el rango de \u0000-\u0080 y \u0082. Se eliminará \u0081.

+0

Sólo un pensamiento, ¿pero eso tampoco se va en el carácter de subrayado? –

+0

y exclamación? elimina las letras internacionales ... –

+0

@tomaszs He actualizado la respuesta para abordar eso. – sachleen

1

Usted puede tratar con una expresión regular como: var cleaned = someString.replace(/[^a-zA-Z0-9! ]+/g, "");

+0

Creo que dejó la bandera 'g' de la expresión regular. – jfriend00

+0

Ops ... Gracias, he editado la respuesta. – rcdmk

3

Ambas respuestas publicadas hasta ahora han dejado fuera el signo de interrogación. Me gustaría comentar sobre ellos, pero aún no tengo suficientes representantes.

David está en lo cierto, la expresión regular de sachleen dejará guiones bajos. La expresión regular de rcdmk, modificada de la siguiente manera, hará el truco, aunque si te importan los personajes internacionales, las cosas pueden ser mucho más complicadas.

var result = text.replace(/[^a-zA-Z0-9\s!?]+/g, ''); 

Esto dejará atrás nuevas líneas y pestañas, así como espacios.Si desea deshacerse de las nuevas líneas y las pestañas, así, cambiarlo a:

var result = text.replace(/[^a-zA-Z0-9 !?]+/g, ''); 
+0

Y * ahora *, ¡* puedes * dejar comentarios! =) –

+0

¡lol, gracias! :) – Kelvin

+0

Recuerde, sin embargo: con gran poder viene genial ... * ¡ooh, brillante! * –

2
text = "A(B){C};:a.b*!c??!1<>[email protected]#3" 
result = text.replace(/[^a-zA-Z0-9]/g, '') 

debe devolver ABCabc123

En primer lugar, se define el texto como A B C a b c 1 2 3 pero con caracteres aleatorios conjunto la result como:

text.replace(...), donde los parámetros son:

/.../g, /.../: ^ medios para revertir; No para eliminar las letras que son:

a-z (letras minúsculas), A-Z (letras mayúsculas) y 0-9 (dígitos)

g significa mundial, para eliminar todos partidos no sólo la primera partido

el segundo parámetro es el carácter de sustitución, que se t a una cadena vacía para que solo conserve la cadena especificada. si se especifica , devolverá lo siguiente: "A B C a b c 1 2 3"

Cuestiones relacionadas