2009-08-18 8 views
4

im essayant de valider une chaîne de texte qui doit être dans le format suivant,Aide à la validation regex sur chaîne de texte dans C#

Le numéro « 1 » suivi d'un point-virgule suivie entre 1 et trois chiffres seulement - Ça ressemblerait à ça.

1: 1 (correct)
01h34 (correct)
1: 847 (correct)
1: 2322 (incorrect)

Il ne peut y avoir des lettres ou quoi que ce soit d'autre que les numéros .

Est-ce que quelqu'un sait comment je peux faire cela avec REGEX? et en C#

Répondre

7

Le schéma suivant pourrait le faire pour vous:

^1:\d{1,3}$ 

Exemple de code:

string pattern = @"^1:\d{1,3}$"; 
Console.WriteLine(Regex.IsMatch("1:1", pattern)); // true 
Console.WriteLine(Regex.IsMatch("1:34", pattern)); // true 
Console.WriteLine(Regex.IsMatch("1:847", pattern)); // true 
Console.WriteLine(Regex.IsMatch("1:2322", pattern)); // false 

Pour un accès plus pratique, vous devriez probablement mettre la validation dans une méthode distincte:

private static bool IsValid(string input) 
{ 
    return Regex.IsMatch(input, @"^1:\d{1,3}$", RegexOptions.Compiled); 
} 

Explication du motif:

^  - the start of the string 
1  - the number '1' 
:  - a colon 
\d - any decimal digit 
{1,3} - at least one, not more than three times 
$  - the end of the string 

Les ^ et $ personnages rend le modèle correspondant à la chaîne complète, au lieu de trouver des chaînes valides noyées dans une chaîne plus grande. Sans eux, le motif correspondrait également à des chaînes telles que "1:2322" et "the scale is 1:234, which is unusual".