À l'aide des expressions régulières pour valider une plage numérique

Mon nombre d'entrée est un int. Mais le nombre d'entrée doit être dans une plage de -2055 à 2055 et je veux le vérifier en utilisant l'expression régulière.

Donc, il y a de toute façon d'écrire une expression régulière pour vérifier si un nombre est (-2055, 2055) ou pas ?

Il est plus facile d'utiliser une instruction if pour vérifier si le numéro est dans la gamme ou pas. Mais je suis en train d'écrire un interprète donc je dois utiliser les regex pour vérifier le nombre d'entrée

  • Pourquoi une regex? Il est beaucoup plus facile d'utiliser un < et > de l'opérateur, n'est-ce pas?
  • Tous les regex solutions sont incomplètes ou erronées en ce moment. Cela peut vous donner un aperçu de pourquoi une regex n'est pas le bon outil pour ce travail. Surtout si vous avez eu pour la modifier plus tard...
  • Vous avez raison, Tim! Trung, Tim ont raison. Ce n'est pas plus facile ou plus difficile, son sujet pour ce qu'il est mieux d'atteindre et de résoudre le problème.
  • Je suis en train d'écrire un interpréteur OCaml .... comment puis-je valider le nombre d'entrée dans la plage sans utiliser la regex ??
  • J'ai soumis deux regexes qui sont absolument valide. L'un est lente et bête, l'autre grave, mais ils sont à la fois solides regex solutions.
  • Je suis d'accord que la regex n'est pas le bon outil pour le travail, quand un simple si-plus-que-et-moins-que serait suffisant, mais il est certainement possible.
  • Votre stupide version est correcte, l'autre l'on pourrait (selon le moteur d'expressions régulières utilisées) correspondent pas correctement car par exemple dans .NET, \d correspond à un beaucoup plus que simplement les chiffres 0-9.
  • J'ai changé le \ds à [0-9]. Merci.
  • la nôtre n'est pas à cause de ça. c'est la beauté de stackoverflow - réponses, même à des questions qui semblent ridicules. de bons conseils devrait toujours être accordée même si, comme il a été ici - bien que peut-être un peu plus de force que ce que je suis habitué à voir sur ce site.
  • tu veux dire "en cliquant sur le gris de la coche". Il ne s'allume pas en vert jusqu'à ce que Trung prend des mesures...
  • Il est toujours vert pour moi 😉
  • Veuillez jeter un oeil à mon post aussi.
  • Il existe d'autres moyens en OCaml! J'ai posté un OCaml-anwser.
  • Je vais souligner que, si la regex est d'une terrible façon de décrire un intervalle entier, en train de faire la vérification de plage avec un automate fini déterministe (DFA, qui est le plus efficace de reconnaissance de la régulièrement des ensembles) est une belle idée. Le DFAE est susceptible d'être plus rapide que la conversion de chiffres d'un entier binaire. Dans une application comme IP plage de vérification dans un pare-feu où la performance est critique, ce qui peut être important. Je me rends compte ce n'est probablement pas le cas des OP prévu de cas d'utilisation, mais juste dire...
  • double possible de Expression Régulière: Numérique, gamme
  • J'ai créé pour-regex-plage pour automatiser cela, si quelqu'un est intéressé par un javascript de mise en œuvre.
  • J'ai créé une application java basée sur la mise en œuvre, qui génère automatiquement des expressions régulières qui n'accepte que des nombres entiers à l'intérieur d'une certaine plage github.com/julianthome/ranger

InformationsquelleAutor Trung Nguyen | 2014-03-02