Je n'ai jamais utilisé d'expressions régulières, j'ai donc du mal à trouver une solution. Je veux que l'expression rationnelle ne corresponde que lorsque la chaîne contenue est composée de tous les chiffres, mais dans les deux exemples ci-dessous, elle correspond à une chaîne qui contient tous les chiffres plus un signe égal comme "1234=4321". Je suis sûr qu'il existe un moyen de modifier ce comportement, mais comme je l'ai dit, je n'ai jamais vraiment fait grand-chose avec les expressions régulières.
string compare = "1234=4321";
Regex regex = new Regex(@"[\d]");
if (regex.IsMatch(compare))
{
//true
}
regex = new Regex("[0-9]");
if (regex.IsMatch(compare))
{
//true
}
Au cas où cela aurait de l'importance, j'utilise C# et .NET2.0.
6 votes
Avez-vous besoin de correspondre numéros o chiffres ? Par exemple : 123.456 est un nombre, mais il n'y a pas que des chiffres.
0 votes
Exactement, l'OP n'est pas totalement clair sur l'utilisation d'entiers ou non.
3 votes
Pourquoi ne pas essayer d'analyser la chaîne de caractères pour ce cas simple ? bool decimal.TryParse(string string, out decimal result) ou bool int.TryParse(string string, out int result)
1 votes
Regardez cette réponse pour un traitement définitif de l'analyse des nombres avec des expressions régulières.
0 votes
Try.Parse acceptera un signe plus ou moins au début, ainsi que des espaces avant/arrière.
1 votes
En général, le moyen le plus simple de dépanner les expressions Regex, à mon avis, est d'utiliser un interpréteur de ligne de commande, si votre langue le permet (il semble que la plupart le font). Comme cet exemple est en C#, vous pouvez utiliser linqpad.net Vous pouvez également utiliser un point d'arrêt dans le débogueur, puis utiliser la fenêtre immédiate de VS comme CLI.