Antworten:
[^a-zA-Z\d\s:]
\d
und \s
sind Perl - Erweiterungen , die sind in der Regel nicht von den älteren Tool unterstützt wie grep
, sed
, tr
, lex
etc.
Dies sollte es tun:
[^a-zA-Z\d\s:]
Wenn Sie lateinische Zeichen mit Akzent (z. B. à Ñ) als normale Buchstaben behandeln möchten (dh vermeiden, dass sie auch übereinstimmen), müssen Sie auch den entsprechenden Unicode-Bereich ( \ u00C0- \ u00FF ) in Ihre Regex aufnehmen würde so aussehen:
/[^a-zA-Z\d\s:\u00C0-\u00FF]/g
^
negiert was folgta-zA-Z
stimmt mit Groß- und Kleinbuchstaben überein\d
stimmt mit den Ziffern überein\s
stimmt mit Leerzeichen überein (wenn Sie nur Leerzeichen abgleichen möchten, ersetzen Sie diese durch ein Leerzeichen):
entspricht einem Doppelpunkt\u00C0-\u00FF
Entspricht dem Unicode-Bereich für lateinische Zeichen mit Akzent.nb. Die Unicode-Bereichsanpassung funktioniert möglicherweise nicht für alle Regex-Engines, aber das oben Genannte funktioniert sicherlich in Javascript (wie in diesem Stift auf Codepen zu sehen).
nb2. Wenn Sie sich über passende Unterstrichen nicht gestört sind, könnten Sie ersetzen a-zA-Z\d
mit \w
, die Buchstaben, Ziffern übereinstimmt und Unterstrichen.
Versuche dies:
[^a-zA-Z0-9 :]
JavaScript-Beispiel:
"!@#$%* ABC def:123".replace(/[^a-zA-Z0-9 :]/g, ".")
Sehen Sie sich ein Online-Beispiel an:
Keine alphanumerischen Zeichen, Leerzeichen oder '_'.
var reg = /[^\w\s)]|[_]/g;
Diese Regex funktioniert für C # , PCRE und Go, um nur einige zu nennen.
Es funktioniert nicht für JavaScript in Chrome, wie RegexBuddy sagt. Dafür gibt es hier aber schon ein Beispiel.
Dieser Hauptteil davon ist:
\p{L}
die einen Brief aus einer beliebigen Sprache darstellt \p{L}
oder. "\p{Letter}
Die vollständige Regex selbst: [^\w\d\s:\p{L}]
Beispiel: https://regex101.com/r/K59PrA/2
Versuchen Sie Folgendes hinzuzufügen:
^[^a-zA-Z\d\s:]*$
Das hat bei mir funktioniert ... :)
^
und $
beschränken sie auf ganze Zeilen, und der *
Quantifizierer bedeutet, dass sie auch mit leeren Zeilen übereinstimmen.
In JavaScript:
/[^\w_]/g
^
Negation, dh wählen Sie etwas aus, das nicht im folgenden Satz enthalten ist
\w
ein beliebiges Wortzeichen (dh ein beliebiges alphanumerisches Zeichen plus Unterstrich)
_
negiere den Unterstrich, da er als Wortzeichen betrachtet wird
Anwendungsbeispiel - const nonAlphaNumericChars = /[^\w_]/g;
/[^a-zA-Z0-9\s\:]*/