Respuestas:
[^a-zA-Z\d\s:]
\d
y \s
son extensiones de Perl que por lo general no son compatibles con las herramientas más antiguos, como grep
, sed
, tr
, lex
, etc.
Esto debería hacerlo:
[^a-zA-Z\d\s:]
Si desea tratar los caracteres latinos acentuados (p. Ej. À Ñ) como letras normales (es decir, evite combinarlos 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 siguea-zA-Z
coincide con letras mayúsculas y minúsculas\d
coincide con dígitos\s
coincide con el espacio en blanco (si solo desea unir espacios, reemplácelo con un espacio):
coincide con un colon\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 regex, pero lo anterior ciertamente funciona en Javascript (como se ve en este bolígrafo en Codepen).
nb2. Si no le preocupa que coincidan los guiones bajos, puede reemplazarlos a-zA-Z\d
con \w
letras, dígitos y guiones bajos.
Prueba esto:
[^a-zA-Z0-9 :]
Ejemplo de JavaScript:
"!@#$%* ABC def:123".replace(/[^a-zA-Z0-9 :]/g, ".")
Vea un ejemplo en línea:
Sin alfanuméricos, espacios en blanco o '_'.
var reg = /[^\w\s)]|[_]/g;
Esta expresión regular funciona para C # , PCRE y Go, por nombrar algunos.
No funciona para JavaScript en Chrome de lo que dice RegexBuddy . Pero ya hay un ejemplo para eso aquí.
Esta parte principal de esto es:
\p{L}
que representa \p{L}
o \p{Letter}
cualquier tipo de letra de cualquier idioma.
La expresión regular completa en sí: [^\w\d\s:\p{L}]
Ejemplo: https://regex101.com/r/K59PrA/2
En JavaScript:
/[^\w_]/g
^
negación, es decir, seleccione cualquier cosa que no esté en el siguiente conjunto
\w
cualquier carácter de palabra (es decir, cualquier carácter alfanumérico, más subrayado)
_
niega el guión bajo, ya que se considera un carácter de "palabra"
Ejemplo de uso - const nonAlphaNumericChars = /[^\w_]/g;
/[^a-zA-Z0-9\s\:]*/