2016-06-02 7 views
0

Ich habe diese Textbox:Zulassen von benutzerdefinierten Buchstaben in der Eingabeüberprüfung?

<TextBox PreviewTextInput="InputValidation"/> 

Ich möchte, dass der Benutzer nur Ziffern- und dieses Symbol einfügen =>:

ich dies tatsächlich tat:

private void InputValidation(object sender, TextCompositionEventArgs e) 
{ 
     Regex regex = new Regex("[^0-9]+"); 
     e.Handled = regex.IsMatch(e.Text); 
} 

dies erlauben nur zu Gib die Ziffer ein, wenn ich : drücke kann ich das Symbol nicht sehen. Wie kann ich das in der Regex hinzufügen?

+1

Fügen Sie es einfach zu Ihrem Bereich von Zeichen, so wird es '[^ 0-9:]' –

+0

@MattBurland Netter Trick, danke :) – D3bug

Antwort

2

Die eckigen Klammern in regex verwendet werden, eine Reihe von Zeichen zu bezeichnen, übereinstimmen (oder, mit der ^ nicht übereinstimmen). Also alles, was Sie tun müssen, ist fügen Sie den : Charakter:

Regex regex = new Regex("[^0-9:]+"); 

Nun, wenn Sie es machen wollte, so dass sie nur 1 hinzufügen können (oder eine andere Nummer) von :, dann wird es ein wenig schwieriger zu tun bekommen , aber in diesem Fall möchten Sie vielleicht nur validieren, wenn der Benutzer die Eingabe beendet hat und nicht während sie tippen (weil es sonst für den Benutzer ein echter Schmerz wird).

0

Versuchen Sie dies bitte:

[0-9\:]+$ 

Auf diese Weise können Sie Zahlen von 0 bis 9 schreiben, und der Charakter :

+0

Keine Notwendigkeit für die '\\' Charakter, übrigens. –

1
Regex regex = new Regex("[^0-9:]+"); 

Um zu klären, was das bedeutet: -

'^' bedeutet 'nicht'.

'0-9' bedeutet 'von Null bis Neun'.

"+" bedeutet "ein oder mehrere Vorkommen".

[] bezeichnet den Bereich der übereinstimmenden Zeichen.

Da aber '0-9' und ':' in Klammern stehen, sind beide Vorkommnisse korrekt.

Der obige Code versucht, die Wörter zu suchen, die keine Ziffern enthalten und: .Wenn es passiert, dann fahren Sie fort.

Verwandte Themen