2010-08-01 7 views
3

Im essayant de construire une expression régulière pour correspondre à peu si la longueur de la chaîne est impair. Je n'ai pas eu de succès jusqu'à présent.chaîne match de longueur impaire

2313432 - vrai

12 - faux

121111111111111 - vrai

Merci

+0

pourquoi voulez-vous utiliser pour cette regex? – Ties

+3

Je comprends qu'il peut y avoir une raison particulière pour laquelle vous devez utiliser des regex, et je ne veux pas le deviner; mais si vous étiez juste après une solution, je suppose que vous pourriez simplement utiliser (string.size% 2) == 1 (quelle que soit la langue)? – Smashery

+0

juste essayer d'apprendre regex :) – Dacto

Répondre

10

Vous voulez cette expression régulière:

^.(..)*$

Ce dit, trouver un caractère, puis zéro ou plusieurs ensembles de deux personnages, tout est ancrée au début et à la fin de la chaîne.

4

Que diriez-vous quelque chose comme: ^(..)*.$?

+0

@Dacto: J'allais dire la même chose, mais il avait fait une modification à sa réponse. Rafraîchir et vous verrez que cela est maintenant correct sauf qu'il ne correspond pas à des chaînes de longueur 1. (Je ne sais pas pourquoi les gens sont upvoting, maintenant ou avant le montage!) –

+0

' '^ ((..) + . |.) $ ''ajoute une correspondance pour une longueur de 1 chaîne (j'utiliserais toujours' strlen() 'par contre) – Seth

+0

@Seth: Cette regex est plus compliquée qu'elle ne devrait l'être. (Voir ma réponse) –

Questions connexes