2009-09-21 13 views
2

J'ai essayé plusieurs combinaisons Regex pour comprendre, mais une partie ou la condition échoue,expression régulière qui correspond à une chaîne qui comprend uniquement des lettres spécifiques

J'ai une chaîne d'entrée, qui ne pouvait contenir une donnée ensemble de caractères définis

disons A, B ou C à l'intérieur.

Comment puis-je faire correspondre quelque chose comme ça?

ABBBCCC - isMatch vrai

AAASDFDCCC - isMatch faux

ps. J'utilise C#

+0

inconnu: Est-ce ABBBBAC match? –

+0

oui ... il va correspondre .... Toute chaîne qui a A et/ou B et/ou C correspondra – 81967

+0

Qu'en est-il de la sensibilité à la casse? Est-ce que aBBBbBc correspondra? –

Répondre

18
^[ABC]+$ 

devrait être suffisant: qui utilise un Character class or Character Set. Le Anchors '^' et '$' seraient là seulement pour s'assurer que toute la chaîne contient seulement ces caractères du début à la fin.

Regex.Match("ABACBA", "^[ABC]+$"); // => matches 

Signification: un jeu de caractères ne garantit pas l'ordre des caractères correspondants.

Regex.Match("ABACBA", "^A+B+C+$"); // => false 

garantiraient l'ordre

+0

Merci VonC, Works Perfect, j'utilisais [ABC] + que je pensais que serait bien, mais l'ancre et $ sont nécessaires .... Cheers !! – 81967

+0

Merci pour le conseil de commande, cela va m'aider. – JasonBartholme

1

Je pense que vous cherchez ceci:


Match m = Regex.Match("abracadabra", "^[ABC]*$"); 
if (m.Success) { 
    // Macth 
} 
+0

"^ [ABC] * $" correspondra également à une chaîne vide. Pour forcer la présence d'au moins un des caractères, changez-le en "^ [ABC] + $" –

Questions connexes