Réponses:
[^a-zA-Z\d\s:]
\d
et \s
sont des extensions Perl qui sont généralement pas pris en charge par les anciens outils comme grep
, sed
, tr
, lex
, etc.
Cela devrait le faire:
[^a-zA-Z\d\s:]
Si vous voulez traiter les caractères latins accentués (par exemple à Ñ) comme des lettres normales (c'est-à-dire éviter de les faire correspondre également), vous devrez également inclure la plage Unicode appropriée ( \ u00C0- \ u00FF ) dans votre expression régulière , donc il ressemblerait à ceci:
/[^a-zA-Z\d\s:\u00C0-\u00FF]/g
^
annule ce qui suita-zA-Z
correspond aux lettres majuscules et minuscules\d
correspond aux chiffres\s
correspond à un espace blanc (si vous souhaitez uniquement faire correspondre des espaces, remplacez-le par un espace):
correspond à un deux-points\u00C0-\u00FF
correspond à la plage Unicode pour les caractères latins accentués.nb. La correspondance de plage Unicode peut ne pas fonctionner pour tous les moteurs regex, mais ce qui précède fonctionne certainement en Javascript (comme le montre ce stylo sur Codepen).
nb2. Si vous ne vous souciez pas de faire correspondre les traits de soulignement, vous pouvez remplacer a-zA-Z\d
par \w
, qui correspond aux lettres, aux chiffres et aux traits de soulignement.
Essaye ça:
[^a-zA-Z0-9 :]
Exemple JavaScript:
"!@#$%* ABC def:123".replace(/[^a-zA-Z0-9 :]/g, ".")
Voir un exemple en ligne:
Aucun espace alphanumérique, blanc ou «_».
var reg = /[^\w\s)]|[_]/g;
Cette expression régulière fonctionne pour C # , PCRE et Go pour n'en nommer que quelques-uns.
Cela ne fonctionne pas pour JavaScript sur Chrome d'après ce que dit RegexBuddy . Mais il y a déjà un exemple pour cela ici.
Cette partie principale de ceci est:
\p{L}
qui représente \p{L}
ou \p{Letter}
tout type de lettre de n'importe quelle langue. »
Le regex complet lui-même: [^\w\d\s:\p{L}]
Exemple: https://regex101.com/r/K59PrA/2
En JavaScript:
/[^\w_]/g
^
négation, c'est-à-dire sélectionner tout ce qui n'est pas dans l'ensemble suivant
\w
tout caractère de mot (c'est-à-dire tout caractère alphanumérique, plus le trait de soulignement)
_
annule le trait de soulignement, car il est considéré comme un caractère «mot»
Exemple d'utilisation - const nonAlphaNumericChars = /[^\w_]/g;
/[^a-zA-Z0-9\s\:]*/