2017-07-06 4 views
-1

Ich habe keine Erfahrung mit regulären Ausdrücken. Ich brauche einen regulären Ausdruck, der die Wiederholung von Sonderzeichen nicht erlaubt (+ - */& etc.) Die Zeichenfolge kann Ziffern, alphanumerische Zeichen und Sonderzeichen enthalten.Regex-Wie wiederhole ich Sonderzeichen?

Dies sollte gelten: abc, df

Dies sollte ungültig sein: abc-, df

i geschätzt werden wirklich, wenn Sie mir helfen können! Danke für den Fortschritt.

+1

Was halten Sie ein Sonderzeichen? '-' und', 'zu mir sind gleich 'special' – Brandon

Antwort

1

Zwei Lösungen, die eine Zeichenfolge übereinstimmen bisher präsentiert, die nicht erlaubt ist.

Aber die tilte ist Wie zu verhindern ..., so nehme ich an, dass der Regex sollte den Zeichenfolge erlaubt entsprechen. Es bedeutet, dass die Regex sollte:

  • Spiel des ganze String, wenn es nicht mehr als 2 aufeinander folgende Sonderzeichen enthält,
  • nicht anders entsprechen.

Sie können diese zusammen die folgenden Teile setzen erreichen:

  • ^ - Beginn der Zeichenfolge Anker,
  • (?!.*[...]{2}) - ein negative Vorschau für 2 aufeinander folgende Sonder Zeichen (markiert hier als ...), an jedem Ort,
  • ein Regex, der mit der ganzen (nicht leeren) Zeichenkette übereinstimmt,
  • $ - Ende des Schnurankers.

So soll die ganze Regex sein:

^(?!.*[[email protected]#$%^&*()\-_+={}[\]|\\;:'",<.>\/?]{2}).+$ 

Beachten Sie, dass Klasse innerhalb eines char (zwischen [ und ]) einem umgekehrten Schrägstrich das folgende Zeichen zu entkommen, bevor - platziert werden soll (wenn in die Mitte der Sequenz), schließende eckige Klammer, ein Backslash selbst und / (Regex Terminator).

Oder wenn Sie die Regex einzelne Wörter (nicht die ganze string) anwenden möchten, dann sollten die Regex sein:

\b(?!\S*[[email protected]#$%^&*()\-_+={}[\]|\\;:'",<.>\/?]{2})\S+ 
+0

Es funktioniert super, du hast meinen Tag gerettet. Wirklich geschätzt, danke! – asyaben

0

Verwenden Sie die folgende Regex, um die ungültige Zeichenfolge zu finden.

[^A-Za-z0-9]{2,}