Question

J'ai besoin d'un regex CLR pour des fractions ou des nombres entiers et des fractions où

1/2 est correct 12 2/3 est également correct

et un signe moins peuvent apparaître juste avant n’importe quel nombre.

Je suis arrivé pour la première fois avec -? ([0-9] *)? -? [0-9] + \ / -? [0-9] + mais cela semble permettre à < code> 2/7 12 aussi, par exemple.

Était-ce utile?

La solution

Eh bien, cette expression rationnelle serait en deux parties, le nombre entier (facultatif):

(:?-?\d+ )?

et la partie fractionnaire:

-?\d+/-?\d+

Et nous devons faire correspondre la chaîne complète; alors:

^(:?-?\d+ )?-?\d+/-?\d+$

Tester un peu:

PS> $re=[regex]'^(:?-?\d+ )?-?\d+/-?\d+

Cependant, cela permet également de "-12 -2 / -3" , ou des choses comme "1 -1 / 2" qui ne le sont pas. beaucoup de sens.

ETA: Votre regex originale fonctionne également. Il lui manquait simplement les ancres pour le début et la fin de la chaîne ( ^ et $ , respectivement). En les ajoutant, cela fonctionne correctement.

PS> "1/2","12 1/2","-12 2/3","-5/8","5/-8"|%{

Eh bien, cette expression rationnelle serait en deux parties, le nombre entier (facultatif):

(:?-?\d+ )?

et la partie fractionnaire:

-?\d+/-?\d+

Et nous devons faire correspondre la chaîne complète; alors:

^(:?-?\d+ )?-?\d+/-?\d+$

Tester un peu:

<*>

Cependant, cela permet également de "-12 -2 / -3" , ou des choses comme "1 -1 / 2" qui ne le sont pas. beaucoup de sens.

ETA: Votre regex originale fonctionne également. Il lui manquait simplement les ancres pour le début et la fin de la chaîne ( ^ et $ , respectivement). En les ajoutant, cela fonctionne correctement.

-match $re} | gu True

Cependant, cela permet également de "-12 -2 / -3" , ou des choses comme "1 -1 / 2" qui ne le sont pas. beaucoup de sens.

ETA: Votre regex originale fonctionne également. Il lui manquait simplement les ancres pour le début et la fin de la chaîne ( ^ et $ , respectivement). En les ajoutant, cela fonctionne correctement.

Autres conseils

J'avais juste une exigence similaire, mais je voulais aussi faire correspondre les nombres décimaux. Je suis venu avec la regex suivante

^-?(?<WholeNumber>\d+)(?<Partial>(\.(?<Decimal>\d+))|(/(?<Denomiator>\d+))|(\s(?<Fraction>\d+/\d+)))?$

Ou simplement ceci si vous ne voulez pas de groupes nommés

^-?\d+((\.\d+)|(/\d+)|(\s\d+/\d+))?$

Pour supprimer le nombre décimal de la validation, il serait raccourci à

^-?\d+((/\d+)|(\s\d+/\d+))?$

J'espère que ça aide quelqu'un!

essayez ceci, seulement pour une fraction et non pour le nombre entier

/^\d{1}\/?\d{1}$/
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top