Ho bisogno di una regex che accetti solo cifre da 0-9 e nient'altro. Nessuna lettera, nessun carattere.
Ho pensato che questo potrebbe funzionare:
^[0-9]
o anche
\d+
ma questi accettano i caratteri : ^,$,(,), ecc.
Ho pensato che entrambe le regex di cui sopra avrebbero fatto il trucco e non sono sicuro del perché stia accettando quei caratteri.
EDIT:
Questo è esattamente quello che sto facendo:
private void OnTextChanged(object sender, EventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", textbox.Text))
{
textbox.Text = string.Empty;
}
}
Questo permette ai personaggi che ho menzionato sopra.
La tua regex ^[0-9]
corrisponde a qualsiasi cosa che inizia con una cifra, incluse stringhe come "1A". Per evitare una corrispondenza parziale, aggiungi un $
alla fine:
^[0-9]*$
Questo accetta qualsiasi numero di cifre, inclusa nessuna. Per accettare una o più cifre, cambia il *
in +
. Per accettare esattamente una cifra, rimuovi semplicemente il *
.
aggiornamento: Hai confuso gli argomenti di IsMatch
. Il modello dovrebbe essere il secondo argomento, non il primo:
if (!System.Text.RegularExpressions.Regex.IsMatch(textbox.Text, "^[0-9]*$"))
CAUTELA: In JavaScript, \d
è equivalente a [0-9]
, ma in .NET, \d
di default corrisponde a qualsiasi cifra decimale Unicode, incluse tariffe esotiche come ႒ (Myanmar 2) e ߉ (N'Ko 9). A meno che la vostra applicazione non sia preparata a trattare con questi caratteri, attenetevi a [0-9]
(o fornite il flag RegexOptions.ECMAScript.