javascript - una - ¿Cómo eliminar todo menos las letras, los números, el espacio, la exclamación y el signo de interrogación de la cadena?
signos ortograficos pdf (4)
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 correcto, la expresión regular de Sachleen dejará de subrayar. 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 pestañas también, cámbielo a:
var result = text.replace(/[^a-zA-Z0-9 !?]+/g, '''');
Cómo eliminar todo pero
letras, números, espacios, signos de exclamación, signos de interrogación de una cadena?
Es importante que el método sea compatible con los idiomas internacionales (UTF-8).
Puede intentar con una expresión regular como: var cleaned = someString.replace(/[^a-zA-Z0-9! ]+/g, "");
Puedes usar expresiones regulares
myString.replace(/[^/w/s!?]/g,'''');
Esto reemplazará todo menos un carácter de palabra, espacio, signo de exclamación o pregunta.
Clase de personaje :
/w
significa "carácter de palabra", generalmente[A-Za-z0-9_]
. Observe la inclusión del subrayado y los dígitos.
/s
significa "personaje de espacio en blanco". Incluye[ /t/r/n]
.
Si no desea el guión bajo, puede usar simplemente [A-Za-z0-9]
.
myString.replace(/[^A-Za-z0-9/s!?]/g,'''');
Para caracteres Unicode, puede agregar algo como /u0000-/u0080
a la expresión. Eso excluirá todos los caracteres dentro de ese rango Unicode. Deberá eliminar el rango de los caracteres que no desea eliminar. Puede ver todos los códigos en el Mapa Unicode . 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
.
text = "A(B){C};:a.b*!c??!1<>2@#3"
result = text.replace(/[^a-zA-Z0-9]/g, '''')
Debería devolver ABCabc123
Primero, definimos el texto como
ABC abc 1 2 3
pero con caracteres aleatorios establecemos elresult
como:
text.replace(...)
donde están los parámetros:
/.../g
,/.../
:^
significa invertir; no eliminar las letras que son:
az
(letras minúsculas),AZ
(letras MAYÚSCULAS) y0-9
(dígitos)
g
significa global, para eliminar todas las coincidencias no solo la primera coincidenciaEl segundo parámetro es el carácter de reemplazo, lo configuramos en una cadena vacía para que solo mantenga la cadena especificada. Si
se especifica, devolverá esto:
"ABC abc 1 2 3"