it-swarm.com.de

Regex, der nur Zahlen (0-9) und keine Zeichen akzeptiert

Ich brauche einen regulären Ausdruck, der nur Ziffern von 0-9 und sonst nichts akzeptiert. Keine Buchstaben, keine Zeichen.

Ich dachte das würde funktionieren:

^[0-9]

oder auch

\d+

aber diese akzeptieren die Zeichen: ^, $, (,) usw

Ich dachte, dass beide oben genannten regulären Ausdrücke den Trick machen würden und ich bin mir nicht sicher, warum sie diese Zeichen akzeptieren.

BEARBEITEN:

Genau das mache ich:

 private void OnTextChanged(object sender, EventArgs e)
    {

   if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", textbox.Text))
        {
            textbox.Text = string.Empty;
        }
    }

Dies erlaubt die oben erwähnten Zeichen.

127
mo alaz

Ihr regulärer Ausdruck ^[0-9] stimmt mit allem überein, das mit einer Ziffer beginnt , einschließlich Zeichenfolgen wie "1A". Um eine teilweise Übereinstimmung zu vermeiden, fügen Sie am Ende einen $ hinzu:

^[0-9]*$

Dies akzeptiert eine beliebige Anzahl von Ziffern, einschließlich keiner. Ändern Sie zum Akzeptieren einer oder mehrerer Ziffern den * in +. Um genau eine Ziffer zu akzeptieren, entfernen Sie einfach den *.

UPDATE: Sie haben die Argumente zu IsMatch verwechselt. Das Muster sollte das zweite Argument sein, nicht das erste:

if (!System.Text.RegularExpressions.Regex.IsMatch(textbox.Text, "^[0-9]*$"))

ACHTUNG: In JavaScript entspricht \d[0-9], in .NET entspricht \d standardmäßig Beliebig nicode-Dezimalstelle , einschließlich exotischer Tarife wie ႒ (Myanmar 2) und ߉ (N'Ko 9). Bleiben Sie bei [0-9] (oder geben Sie das RegexOptions.ECMAScript Flag an), es sei denn, Ihre App ist bereit, mit diesen Zeichen umzugehen.

317
Michael Liu