2008-11-18 9 views
1

puis-je comparer en quelque sorte deux nombres dans regex? je veux regex qui est correct pour 10-12, mais incorrect pour 12-10. Je veux dire que 10 doit être inférieur à 12. Je veux le faire en Javascript.regex comparer deux nombres

+0

Je pense que vous voudrez donner une meilleure description, ou plus d'exemples, de ce dont vous avez besoin. –

+0

[Jeff] (http://www.codinghorror.com/blog/archives/001016.html) répondez à cela !! –

+0

Les expressions régulières sont pour les motifs correspondants, et non pour la vérification des valeurs numériques. Trouvez une chaîne probable avec la regex, puis vérifiez sa valeur numérique quelle que soit la langue de votre hôte (Javascript, peu importe). –

Répondre

14

Si l'entrée est toujours de la forme XY, alors pourquoi ne pas utiliser la scission() fonction avec « - » comme séparateur, puis comparer les deux parties avec>

Vous ne pouvez pas comparer les valeurs numériques à l'aide RegExps.

+4

+1 pour vos pouvoirs psychiques dans la détermination de ce que le demandeur voulait vraiment. –

+3

Vous pouvez extraire les nombres en utilisant une regex; vous ne pouvez pas faire la comparaison. Les regex ne sont pas l'outil universel de résolution de problèmes. –

+0

Je pense que je savais ce qu'il voulait dire, mais il m'a fallu aussi longtemps pour formuler une réponse que vous aviez déjà répondu :) – warren

2

Je n'utiliserais pas regex pour cela. Je diviserais la chaîne sur l'opérateur, puis comparerais les deux nombres résultants basés sur quel opérateur j'ai trouvé (je suppose que 10+12 et 12+10 seraient tous les deux légaux).

+0

Je veux dire que 10 doit être plus petit que 12 –

+0

Regex est utilisé pour faire correspondre les modèles, ne pas comparer les valeurs. Je diviserais simplement la chaîne et utiliserais < or > pour comparer les deux nombres résultants. –

2

Le problème ici est que vous essayez de rouler deux problèmes en un.

Regex est excellent pour la syntaxe (c'est-à-dire pour la reconnaissance des nombres), mais les déchets pour la sémantique (c'est-à-dire la reconnaissance de la signification). Donc, regex va certainement vous aider à reconnaître x-y mais vous demandez trop pour ensuite passer à la raison de la relation entre x et y.

Comme souvent cité;

Certaines personnes, lorsqu'ils sont confrontés à un problème , pensez « Je sais, je vais utiliser expressions régulières. » Maintenant, ils ont deux problèmes. (JWZ)

Ou plutôt, vous en avez maintenant trois.

Questions connexes