2012-12-20 5 views
5

In meiner C# -Anwendung, ich brauche Strings zu überprüfen, um sicherzustellen, dass sie nur folgende Angaben enthalten:Regex zu validieren, dass eine Zeichenfolge enthält nur 0 bis 9, +, #, *, [und]

  • 0 - 9
  • +
  • #
  • *
  • [
  • ]

Wenn mein Benutzer ein Zeichenfolgenfeld in der Zelle eines DataGridView-Steuerelements bearbeitet, muss ich den Wert überprüfen. Mein CellValidating Event-Handler sieht derzeit wie folgt aus:

if (!Regex.IsMatch(e.FormattedValue.ToString(), @"\A\b[0-9]+\b\Z")) 
{ 
    // notify the user that the string is invalid and cancel validation 
    e.Cancel = true; 
} 

Dies scheint für 0 zu arbeiten - 9, aber ich habe noch einen regulären Ausdruck zum Laufen zu bringen, die alle Metazeichen enthält ich brauche. Ich habe versucht, ein einziges Metazeichen zu der vorhandenen Regex hinzuzufügen, aber es funktioniert nicht. Zum Beispiel ...

if (!Regex.IsMatch(e.FormattedValue.ToString(), @"\A\b[0-9#]+\b\Z")) 

... erlaubt nicht # wie ich dachte, es würde. Es zu entkommen, machte auch keinen Unterschied. Kann mir das jemand etwas näher bringen?

+1

Das Wort Grenzmarkierungen ('\ b') werden Probleme verursachen, weil die meisten Ihrer Metazeichen gelten nicht als Teil eines „Wort“. – mellamokb

+0

Danke für die Erklärung mellamokb. – user685869

Antwort

7

Verwendung dieses regex ^[0-9+#*\[\]]+$

+0

Vielen Dank für die schnelle Antwort. – user685869

Verwandte Themen