Respostas:
[^a-zA-Z\d\s:]
\d
e \s
são extensões Perl que normalmente não são suportados por ferramentas mais antigas, como grep
, sed
, tr
, lex
, etc.
Isso deve servir:
[^a-zA-Z\d\s:]
Se você deseja tratar caracteres latinos acentuados (por exemplo, à Ñ) como letras normais (evite correspondê-los também), também precisará incluir o intervalo Unicode apropriado ( \ u00C0- \ u00FF ) em seu regex, para que ficaria assim:
/[^a-zA-Z\d\s:\u00C0-\u00FF]/g
^
nega o que se seguea-zA-Z
combina letras maiúsculas e minúsculas\d
corresponde a dígitos\s
corresponde ao espaço em branco (se você quiser corresponder apenas a espaços, substitua-o por um espaço):
corresponde a dois pontos\u00C0-\u00FF
corresponde ao intervalo Unicode para caracteres latinos acentuados.nb. A correspondência de intervalo Unicode pode não funcionar para todos os mecanismos de expressão regular , mas o acima certamente funciona em Javascript (como visto nesta caneta no Codepen).
nb2. Se você não estiver preocupado com a correspondência de sublinhados, substitua-o a-zA-Z\d
por \w
, que corresponde a letras, dígitos e sublinhados.
Tente o seguinte:
[^a-zA-Z0-9 :]
Exemplo de JavaScript:
"!@#$%* ABC def:123".replace(/[^a-zA-Z0-9 :]/g, ".")
Veja um exemplo online:
Nenhum espaço alfanumérico, em branco ou '_'.
var reg = /[^\w\s)]|[_]/g;
Esse regex funciona para C # , PCRE e Go, para citar alguns.
Não funciona para JavaScript no Chrome, pelo que diz o RegexBuddy . Mas já existe um exemplo para isso aqui.
Esta parte principal disso é:
\p{L}
que representa \p{L}
ou \p{Letter}
qualquer tipo de letra de qualquer idioma.`
A regex completa em si: [^\w\d\s:\p{L}]
Exemplo: https://regex101.com/r/K59PrA/2
Tente adicionar isto:
^[^a-zA-Z\d\s:]*$
Isso tem funcionado para mim... :)
^
e o $
limitam para corresponder a linhas inteiras e o *
quantificador significa que também corresponde a linhas vazias.
Em JavaScript:
/[^\w_]/g
^
negação, ou seja, selecione qualquer coisa que não esteja no conjunto a seguir
\w
qualquer caractere de palavra (ou seja, qualquer caractere alfanumérico, mais sublinhado)
_
negar o sublinhado, pois é considerado um caractere de 'palavra'
Exemplo de uso - const nonAlphaNumericChars = /[^\w_]/g;
/[^a-zA-Z0-9\s\:]*/