J'ai besoin d'une expression régulière qui acceptera uniquement les chiffres de 0 à 9 et rien d'autre. Pas de lettres, pas de caractères.
Je pensais que cela fonctionnerait:
^[0-9]
ou même
\d+
mais ceux-ci acceptent les caractères: ^, $, (,), etc.
Je pensais que les deux expressions rationnelles ci-dessus feraient l'affaire et je ne suis pas sûr de savoir pourquoi il accepte ces caractères.
MODIFIER:
C'est exactement ce que je fais:
private void OnTextChanged(object sender, EventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", textbox.Text))
{
textbox.Text = string.Empty;
}
}
Cela permet aux personnages que j'ai mentionnés ci-dessus.
Votre regex ^[0-9]
correspond à tout commençant par avec un chiffre, y compris les chaînes telles que "1A". Pour éviter une correspondance partielle, ajoutez un $
à la fin:
^[0-9]*$
Ceci accepte n'importe quel nombre de chiffres, y compris aucun. Pour accepter un ou plusieurs chiffres, remplacez le *
par +
. Pour accepter exactement un chiffre, supprimez simplement le *
.
UPDATE: Vous avez mélangé les arguments de IsMatch
. Le modèle devrait être le deuxième argument, pas le premier:
if (!System.Text.RegularExpressions.Regex.IsMatch(textbox.Text, "^[0-9]*$"))
ATTENTION: En JavaScript, \d
équivaut à [0-9]
, mais en .NET, \d
correspond par défaut à any chiffre décimal Unicode , y compris les plats exotiques comme (Myanmar 2) et (N'Ko 9). Sauf si votre application est prête à gérer ces caractères, restez fidèle à [0-9]
(ou indiquez le drapeau RegexOptions.ECMAScript ).