Java Expression régulière d'une addresse ip

Résolu
Bonjour,
J'aimerais qu'on me corrige mon expression régulière pour une address ip v4:
#(^[1-2][0-9]{1,2}*/.){3}[1-2][0-9]{1,2}*#
merci
--
Il faut faire partie de la solution et non du problème ;-)
Configuration: Windows Vista
Firefox 3.0.7

5 réponses

  1. J'ai modifier celle de druzy pour accepter 192.192.192.192 par exemple.
    Voici l'expression régulière modifié :
    ^((2[0-5]{2})|(1[0-9]{2})|([1-9][0-9])|([1-9]))\\.(((2[0-5]{2})|(1[0-9]{2})|([1-9][0-9])|([0-9]))\\.){2}((2[0-5]{2})|(1[0-9]{2})|([1-9][0-9])|([0-9]))$
    1. Aucune âme charitable ???
      J'ai fais un autre essai :

      if(!ip.matches("^((((1|2)([0-9]){2}) | ([1-9][0-9]) | [0-9])(\\.)){3}(((1|2)([0-9]){2}) | ([1-9][0-9]) | [0-9])"))

      on me dit:

      Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed group near index 101
      ^((((1|2)([0-9]){2}) || ([1-9][0-9]) || ([0-9]))(\.)){3}(((1|2)([0-9]){2}) || ([1-9][0-9]) || ([0-9])

      ^
      at java.util.regex.Pattern.error(Unknown Source)
      laisse tomber.personne.taidera.error(on ne sais jamais :p)
      at java.util.regex.Pattern.accept(Unknown Source)
      at java.util.regex.Pattern.group0(Unknown Source)
      at java.util.regex.Pattern.sequence(Unknown Source)
      at java.util.regex.Pattern.expr(Unknown Source)
      at java.util.regex.Pattern.compile(Unknown Source)
      at java.util.regex.Pattern.<init>(Unknown Source)
      at java.util.regex.Pattern.compile(Unknown Source)
      at java.util.regex.Pattern.matches(Unknown Source)
      at java.lang.String.matches(Unknown Source)
      at ip.main(ip.java:12)

      si quelqu'un s'y connais en ER ...
      1. Salut,

        Je passais par là par hasard, et étant donné que ta question date de plus de 6 mois, je suppose que tu as du résoudre ton problème depuis le temps.

        Sinon voila l'expression que j'utilise pour contrôler une ipv4 :

        ip.matches("^([1-9]\\d{0,2}\\.){3}[1-9]\\d{0,2}$")


        Désolé de déterrer un sujet aussi vieux, mais si quelqu'un passe par hasard ici, ça peut toujours l'aider.
        1. Sauf erreur de ma part,

          Je pense que ta RegEx test seulement si les on a 4 fois 3 chiffres avec des points entre. Mais les chiffres peuvent être plus grand que 255 et il ne peuvent pas etre égal à 0.

          Donc 127.0.0.1 est reconnu comme faux
          Alors que 325.485.985.423 est reconnu comme vrais
      2. Oups en effet, c'est une erreur de ma part.
        le plus simple serait :
        "^(\\d{1,3}\\.){3}\\d{1,3}$"


        après bien sûr 325.485.985.423 serais reconnu comme vrai il faudrait affiner.
        Là à froid, je ne sais pas comment tu peux le vérifier dans l'expression régulière, mais tu peux faire un split sur le point et vérifier que les valeurs soient inférieures ou égale à 255.
        1. ceci marche : "^(([1-2][0-5]{2})|([1-9][0-9])|([1-9]))\\.((([1-2][0-5]{2})|([1-9][0-9])|([0-9]))\\.){2}(([1-2][0-5]{2})|([1-9][0-9])|([0-9]))$"