2017-05-30 9 views
0

Ich versuche, eine RegEx zu bilden, die alphanumerische zusammen mit einigen Sonderzeichen (@ -_.) Erlauben wird. Ich habe versucht, diese Sonderzeichen auf die weiße Liste zu setzen, aber auch andere Sonderzeichen sind erlaubt. Also habe ich versucht, alle anderen Sonderzeichen, ausgenommen die oben genannten, auf die schwarze Liste zu setzen. Verwendet, um dieses:RegEx für nicht zulassen, dass doppelte Anführungszeichen nicht funktioniert

/^([^\s!#$%&'()*+\/:;<=>?\[\\\]^`{|}~,][[email protected]_0-9-]*[^\s!#$%&'()*+\/:;<=>?\[\\\]^`{|}~,])$/ 

Wie für doppelte Anführungszeichen hinzufügen, so dass es nicht überall in der Zeichenkette erlaubt ist. Haben Sie versucht \“funktioniert aber nicht

+1

Bitte geben Sie die Programmiersprache/Regex Geschmack und gültige/ungültige Zeichenfolgen. Auch, um ehrlich zu sein, sieht dein Ausdruck übermäßig kompliziert aus. – Jan

+0

Programmiersprache: AngularJS (in ng-pattern). Gültige Zeichenkette: cathorse ungültige Zeichenkette: "cathorse ungültige Zeichenkette: cathorse" –

+0

Bitte bearbeiten Sie die Zeichenfolgen in Ihre Frage. – Jan

Antwort

0

Wenn ich lesen Sie richtig regex und verstehen Ihren Wunsch:..

^(       # Start of string and capture group 
[^\s!-,\/:-?\[\\\]^`{|}~,]  # Any character, BUT "blacklisted" 
[\[email protected]]*      # Any number of word characters, @, . or -. 
[^\s!-,\/:-?\[\\\]^`{|}~,]  # Any character, BUT "blacklisted" 
)$ 

Es vereinfacht durch Bereiche verwendet wird. Zum Beispiel in einer Zeichenklasse, !-, ist die gleiche wie !"#$%&'()*+,, die auch blacklists die unerwünschten ".

+0

Ja, Sie verstanden es richtig, aber das Problem ist, Zitate sind am Anfang und am Ende erlaubt, auch wenn ich es in der Blacklist Gruppe wie folgt aufnehmen: \ " –

+0

Bitte erläutern. [Siehe hierzu unter regex101] (https://regex101.com/r/opbwnv/3) (mit PCRE, um Kommentare zu haben. Die Regex ist immer noch die gleiche;). – ClasG

+0

Danke ClasG :), aber es ist nicht erlaubt einzigen Charakter jetzt ZB: ein einzelnes Zeichen 'd' –

1

Verwenden Sie diese ein

Dim clean as string = Regex.replace(tbname,"[^A-Za-z0-9\-/]","") 

dem man es blockiert alle Sonderzeichen

+0

erlaubt sein Ich brauche vier Sonderzeichen ermöglichen (@, -., _,) 1. mit der Rate 2. Bindestrich 3. Unterstrich 4. Punkt –

0

Sie können Ihre Whitelist-Methode verwenden, müssen aber die - zuletzt setzen: [@_.-]; oder Flucht es: [@\-_.]

Ansonsten @-_ bedeutet "alles zwischen ascii von @ und ascii von _".

Regex101.com ist Gold für solche Dinge, es erklärt jeden Teil der Regex.

Verwandte Themen