2010-04-26 7 views
3

Je veux une regex qui va vérifier qu'une chaîne commence par une lettre suivie de quelques lettres, chiffres ou caractères de soulignement. Selon mon parseur EditPadPro regex le test suivant devrait passer. Mais ce n'est pas le cas.Pourquoi Regex ne fonctionne-t-il pas dans .NET?

Regex.IsMatch("Class1_1", @"^\w[\w|\d|_]*$").ShouldBeTrue(); 

Que manque-t-il?

+0

Ceci correspond à 'a | b' – SLaks

+0

Nevermind everyone. J'ai eu un type incorrect mais je ne savais pas que \ w inclut des chiffres et des traits de soulignement –

Répondre

5

Votre regex fonctionne, mais ne fait pas ce que vous pensez.

Vous devez utiliser

Regex.IsMatch("Class1_1", @"^[A-Za-z]\w*$") 

(Testés)

+0

Alternativement, "^ \ w [\ w \ d _] * $", mais, comme cela a été souligné par David M, \ w inclut \ d et _ de toute façon, donc en fait "^ [a-zA-Z] \ w + $" – Zarigani

3

\ w inclut \ d et de souligner - même si votre test passe, l'expression rationnelle ne sera pas tester ce que vous voulez qu'il!

+0

Regex.IsMatch ("Class1_1", @ "^ \ w + $") ne fonctionne pas. Un commentaire sur pourquoi? –

+0

Peut-être vos paramètres de globalisation - cette expression correspond à ma machine. –

Questions connexes