2010-11-05 5 views
1

Salut, je suis en train de droite une expression régulière qui prendra une chaîne et assurer qu'elle commence par un « R » et est suivi de 4 chiffres numériques alors quoi que ce soitBesoin d'aide avec un regex

par exemple. RXXXX .................

Quelqu'un peut-il m'aider avec cela? Ceci est pour ASP.NET

+2

Cela est si terriblement _basic_ regex, je vous suggère de prendre une demi-heure de votre vie à gommer un peu plus http://www.regular-expressions.info /, après quoi vous devriez tout simplement savoir. – Wrikken

+2

Ou il peut passer 2 minutes de sa vie à poser une question, apprendre quelque chose et gagner du temps dans le processus. Ce qui est inutile, c'est que des gens comme vous lui donnent des conneries. –

+0

Merci Travis, je ne suis pas si expérimenté et toute aide est bonne. – BigJim

Répondre

2

Vous voulez que ce soit au début de la ligne, pas n'importe où. En outre, pour l'efficacité, vous ne voulez pas le .+ ou .* à la fin parce que cela correspondra aux caractères inutiles. Donc, l'expression rationnelle suivante est ce que vous voulez vraiment:

^R\d{4} 
+0

C'est drôle, je pensais à l'efficacité et enlevé le $ comme je tapais ma réponse. Je ne sais pas comment il ne m'a pas fallu pour enlever le. * Vous obtenez mon vote!Comme sa compréhension des expressions rationnelles de base est nulle, toute la sensibilité à la casse pourrait être quelque chose à souligner comme je l'ai fait. – pinkfloydx33

2

Cela devrait le faire ...

^R\d{4}.*$ 
  • \d{4} matchs 4 chiffres
  • .* est tout simplement une façon de correspondre à tout caractère 0 fois ou plus
  • la début ^ et fin $ ancres veiller à ce que rien ne précède ou ne suit

Comme Vincent a suggéré, pour votre tâche particulière, il pourrait même être simplifié à cette ...

^R\d{4} 

Parce que vous l'avez dit, il ne compte pas vraiment ce qui suit.

+0

'. * $' Est inutile, vous pouvez simplement le supprimer. –

0

/^R\d{4}.*/ et régler le cas, l'option insensible à moins que vous ne voulez R majuscule de

0
^R\d{4}.* 
  • Le caret ^ correspond à la position avant le premier caractère de la chaîne.
  • \d correspond à un caractère numérique (il est le même que [0-9])
  • {4} indique qu'il doit y avoir exactement 4 chiffres et
  • .* matchs 0 ou plusieurs autres personnages

Pour utilisation:

string input = "R0012 etc.."; 

    Match match = Regex.Match(input, @"^R\d{4}.*", RexOptions.IgnoreCase); 

    if (match.Success) 
    { 
     // Success! 
    } 

Notez l'utilisation de RexOptions.IgnoreCase pour ignorer le cas de la lettre R (il y en fonction de chaînes qui commencent w ith r. Laissez ceci dehors si vous ne voulez pas entreprendre un match insensible à la casse.