Regex, cada carácter no alfanumérico excepto el espacio en blanco o el colon

Parece que no puedo entender cómo hacer esto en ninguna parte. ¿Alguna ayuda?

Básicamente, trato de hacer coincidir todo tipo de personajes diversos, como los signos y signos, signos de dólar, etc.

 [^a-zA-Z\d\s:] 
  • \ d – clase numérica
  • \ s – espacio en blanco
  • a-zA-Z – coincide con todas las letras
  • ^ – los niega a todos, por lo que obtienes caracteres no numéricos, espacios y no dos puntos

Esto debería hacerlo: [^a-zA-Z\d\s:] Espero que ayude!

Prueba esto

 [^a-zA-Z0-9 :] 

Ejemplo de JS:

 "!@#$%* ABC def:123".replace(/[^a-zA-Z0-9 :]/g, ".") 

Vea un ejemplo en línea:

http://jsfiddle.net/vhMy8/

Si desea tratar los caracteres latinos acentuados (por ejemplo, à Ñ), como letras normales (es decir, evitar emparejarlos también), también deberá incluir el rango Unicode apropiado ( \ u00C0- \ u00FF ) en su expresión regular, por lo que se vería así:

 /[^a-zA-Z\d\s:\u00C0-\u00FF]/g 
  • ^ niega lo que sigue
  • a-zA-Z coincide con letras mayúsculas y minúsculas
  • \d coincide con los dígitos
  • \s coincide con el espacio en blanco (si solo quiere unir espacios, reemplácelo con un espacio)
  • : coincide con dos puntos
  • \u00C0-\u00FF coincide con el rango Unicode para caracteres latinos acentuados.

nótese bien. La coincidencia de rango Unicode podría no funcionar para todos los motores de expresiones regulares, pero lo anterior ciertamente funciona en Javascript (como se ve en este lápiz en Codepen).

nb2. Si no te molesta la coincidencia de guiones bajos, puedes reemplazar a-zA-Z\d con \w , que coincide con letras, dígitos y guiones bajos.

si te refieres a “caracteres no alfanuméricos”, intenta usar esto

 var reg =/[^a-zA-Z0-9]/g //[^abc] 

Sin espacio alfanumérico, blanco o ‘_’.

 var reg = /[^\w\s)]|[_]/g; 

Prueba agregar esto

 ^[^a-zA-Z\d\s:]*$ 

Esto funcionó para mí … 🙂

 "0_0 (: /-\ :) 0-0".replace(/[^a-zA-Z0-9 :]/g,"") 

me ha funcionado Sin embargo,

 replace(/[^a-zA-Z/d :]/g,"") 

no estaba funcionando para mí