Wie kann ich nicht zulassen, dass Sonderzeichen, aber Platz in regex?
Brauche ich zum Auffüllen einer Fehlermeldung, wenn der Benutzer ist die Eingabe von Sonderzeichen in einem datagridview. jetzt habe ich Folgendes:
if (Regex.IsMatch(columnValue.ToString(),"^[A-Za-z0-9]$"))
{
MessageBox.Show("You may not use special characters.", "Saving not allowed at this time", MessageBoxButtons.OK, MessageBoxIcon.Error);
diese regex funktioniert, und erlaubt keine Sonderzeichen, aber es fällt in die if-Anweisung, wenn es einen Raum zwischen den Zeichen, die erlaubt sein sollte.
Wie mache ich es, zu ermöglichen, einen Platz, aber nicht Sonderzeichen?
Dank,
InformationsquelleAutor user1683987 | 2012-12-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Sie wollen einfach nur, um ein Leerzeichen hinzuzufügen, um Ihr regulärer Ausdruck:
Beim schreiben von regulären Ausdrücken ist es im Allgemeinen eine gute Gewohnheit zu der Zeichenkette, die Betreiber
@
so viele spezielle Ausdrücke, die erfordern, dass Sie einen umgekehrten Schrägstrich.Wenn Sie ausdrücklich sagen, der reguläre Ausdruck Leerraum ignorieren, in die Muster würden Sie dann brauchen, um zu entkommen den Raum-Charakter.
Wenn Sie wollte, dass Sie beliebige whitespace-Zeichen (Leerzeichen, tabs, Zeilenumbrüche, etc.), du könntest das Leerzeichen Klasse
\s
Update
Es scheint, dass Sie haben wollte, um einen regulären Ausdruck, der ausgeschlossen Charaktere in einer Gruppe.
Ihrer aktuellen regulären Ausdruck suchen vom Beginn der Zeichenkette
^
an das Ende der Zeichenfolge$
für genau ein Zeichen in der GruppeA-Za-z0-9
. Wenn Sie genau das Gegenteil Sie könnte verwenden Sie den operator not!
vor IhrerRegex.IsMatch
wie:Aber wenn Sie schreiben wollte, die einer ausgeschlossenen Gruppe von Zeichen im regulären Ausdruck können Sie einen
^
in Ihrer Gruppe. Wenn die^
innerhalb einer Gruppe[^]
alle Zeichen, die nach ihm kommen, sind ausgeschlossen aus dem Spiel.Den regulären Ausdruck
[A-Z]
würde mit jedem Zeichen A-Z". Der reguläre Ausdruck[^A-Z]
würde mit jedem Charakter NICHT A-Z.Wenn das ist, was Sie waren auf der Suche für Sie könnte sich ändern, Ihre Aussage zu:
Diese Aussage passt zu jeder string enthält alle Zeichen, die nicht in der Gruppe. Also, wenn Sie geben Sie "Hallo Welt", es würde nicht passen. Wenn Sie tippte "Hallo! Welt" würde es passen, weil ein "!" nicht in der Gruppe.
HINWEIS: Der führende
^
- und Hinterkante$
entfernt wurden. In diesem regulären Ausdruck wir kümmern uns nicht um die Länge der Zeichenfolge, wie wir sind, nur passende, auf ein Zeichen, das wir nicht erwartet jeder beliebigen Stelle im string.nochmals vielen Dank für die Antwort, und sorry für die blöde Frage:D
InformationsquelleAutor Jason Whitted
oder als single-check Boolean zu testen,
InformationsquelleAutor MethodMan
Fügen Sie ein Leerzeichen in der Zeichenklasse, D. H. die Nutzung
^[A-Za-z0-9 ]$
statt^[A-Za-z0-9]$
. Dies wird auch noch verbieten andere whitespace-Zeichen, wietab
.InformationsquelleAutor SWeko
Könnte man alle Ziffern, Zeichenketten und das Leerzeichen 🙂
oder
mehr Aufmerksamkeit für die Einbeziehung von Raum, mit Ziffern-und Zeichenfolgen, die nicht wirklich auf die UpperLower Fall 😉 wie OP bereits Kenntnis von dem FALL in seiner Frage selbst.
Ich hoffe
[\d+]
ist nicht dazu bestimmt, dass "eine oder mehrere Ziffern."was tun Sie buchstäblich bedeutet dein Kommentar?
Dass es scheint, Sie wollen
[\d+]
bedeuten "eine oder mehrere Ziffern," das tut es nicht. Wenn das nicht gemeint ist, dann stehe ich korrigiert, aber dann würde es gegen die "Sonderzeichen" Anforderung des OP.InformationsquelleAutor bonCodigo
Warum nicht versuchen, diese regex:
[a-zA-Z0-9\s]+
InformationsquelleAutor Aniket Inge