Expresión regular: cualquier carácter que NO sea una letra o un número


112

Estoy tratando de averiguar la expresión regular que coincidirá con cualquier carácter que no sea una letra o un número. Entonces, caracteres como (,, @, £, (), etc.

Una vez encontrado, quiero reemplazarlo con un espacio en blanco.

Algún consejo.

Respuestas:


165

Para hacer coincidir cualquier cosa que no sea una letra o un número, puede intentar esto:

[^a-zA-Z0-9]

Y para reemplazar:

var str = 'dfj,dsf7lfsd .sdklfj';
str = str.replace(/[^A-Za-z0-9]/g, ' ');

17
\wes para caracteres de Word y es exactamente igual que [a-zA-Z0-9_](observe que el guión bajo se considera un carácter de palabra) ... por lo que la taquigrafía seríastr.replace(/[^\w]/g, ' ')
— Joel Mellon

¡pero también incluirá muchas letras Unicode! ¿Hay alguna forma de excluir letras Unicode?
— Clite Tailor

1
Para incluir caracteres Unicode, puede usar [^ \ p {L} 0-9]
— Dave

@Dave: A partir de 2018 no se puede sin un polyfill, aparentemente ... stackoverflow.com/questions/280712/javascript-unicode-regexes
— Nickolay

¿Hay alguna manera, en lugar de reemplazar con un espacio ... reemplazar con "\" seguido del carácter que se identificó? Así: ¿convertir este dfj, dsf7lfsd .sdklfj en este dfj \, dsf7lfsd \ .sdklfj?
— CrazySpy

38

Esta expresión regular coincide con cualquier cosa que no sea una letra, un dígito o un carácter de subrayado ( _).

\W

Por ejemplo en JavaScript:

"(,,@,£,() asdf 345345".replace(/\W/g, ' '); // Output: "          asdf 345345"

Creo que está buscando / (_ | \ W) / g, para que coincida con cualquier cosa no un dígito o letra (idioma Inglés)
— kennebec

@sbmaxx Quiero reemplazar todos excepto &, (,) estos caracteres. ¿Cómo podría agregar esta condición en la expresión regular actual?
— K Pal

17

Estás buscando:

var yourVar = '1324567890abc§$)%';
yourVar = yourVar.replace(/[^a-zA-Z0-9]/g, ' ');

Esto reemplaza todos los caracteres no alfanuméricos con un espacio.

La "g" al final reemplaza todas las apariciones.

En lugar de especificar az (en minúsculas) y AZ (mayúsculas) también se puede utilizar la en-entre mayúsculas y minúsculas opción: /[^a-z0-9]/gi.


¿Coincidirá con los espacios también? Necesito espacios para mantenerlos. Gracias.
— James Jeffery

Los caracteres espaciales coincidirían, pero luego serían reemplazados por caracteres espaciales, por lo que en efecto los dejaría solos (un espacio seguirá siendo un espacio).
— jimbo


5

intente hacer str.replace (/ [^ \ w] /); ¡Reemplazará todos los números y no alfabetos de su cadena!

Edición 1: str.replace(/[^\w]/g, ' ')


2
Una respuesta funcional sería str.replace(/[^\w]/g, ' '). Si no incluye la /gbandera, solo reemplazará la primera aparición. Y si no define una cadena de reemplazo, aquí un espacio en blanco ' ', reemplazará por undefinedtodo el lugar. Finalmente, los guiones bajos no serán reemplazados porque coinciden \w. Esta respuesta no encaja perfectamente.
— Julien Lirochon

3

Solo para que otros vean:

someString.replaceAll("([^\\p{L}\\p{N}])", " ");

eliminará los caracteres Unicode que no sean letras ni números.

Fuente


No estoy seguro de dónde vinieron los dos votos a favor, pero en JavaScript (de lo que trata esta pregunta) no hay replaceAll, y los \p{..}escapes de propiedad no están ampliamente implementados.
— Nickolay

3
  • Coincidir solo con letras /[A-Z]/ig
  • Coincide con cualquier cosa que no sean letras /[^A-Z]/ig
  • Número de coincidencia solamente /[0-9]/go/\d+/g
  • Coincide con cualquier cosa que no sea un número /[^0-9]/go/\D+/g
  • Coincide con cualquier cosa que no sea número o letra /[^A-Z0-9]/ig

Hay otros patrones posibles


2

¿Lo ha probado? str = str.replace(/\W|_/g,'');Devolverá una cadena sin ningún carácter y puede especificar si algún carácter especial después de la barra de tubería |para capturarlos también.

var str = "1324567890abc§$)% John Doe #$@'.replace(/\W|_/g, ''); volverá str = 1324567890abcJohnDoe

o busque dígitos y letras y reemplácelos por una cadena vacía (""):

var str = "1324567890abc§$)% John Doe #$@".replace(/\w|_/g, ''); volverá str = '§$)% #$@';


1

Para hacer coincidir cualquier cosa que no sea letra o número o letra con signos diacríticos como é, puede intentar esto:

[^\wÀ-úÀ-ÿ]

Y para reemplazar:

var str = 'dfj,dsf7é@lfsd .sdklfàj1';
str = str.replace(/[^\wÀ-úÀ-ÿ]/g, '_');

Inspirado en el poste superior con soporte para diacríticos

fuente

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.