bonjour,,, je code un prog en java et je veux faire un test sur le parametre passe dans un champs de texte est bien est une @ ip ... comment faire et merci d'avance...![]()
![]()
bonjour,,, je code un prog en java et je veux faire un test sur le parametre passe dans un champs de texte est bien est une @ ip ... comment faire et merci d'avance...![]()
![]()
Les expressions régulières feront ca tres bien. a mon avis, celle ci devrait etre bien:
Code : Sélectionner tout - Visualiser dans une fenêtre à part ([0-9]{1,3}\.){3}[0-9]{1,3}
En cherchant...
La question a déjà été posée, et il existe déjà des choses sur le sujet: dans les classes standard de Java, dans les Jakarta Commons, dans les pages "Sources" de developpez.com, certainement sur Google
En effet, ça marche, mais ton expression est peu être un peu trop simplifiée... Elle accepte par exemple l'adresse '651.342.758.925'. Il faudrait donc faire un traitement supplémentaire pour vérifier que chaque champ de ton adresse IP est bien compris entre 0 et 255.Envoyé par zorm
C'est pour ça que je te conseille de faire une recherche: dans les sources de dvp.com, on trouve une classe écrite spécialement pour valider et traiter les adresses IP
certes, je me suis pas embeté à faire une regex qui bride par rapport aux limites d'une adresse IP, bien que ca ne soit pas très compliqué, mais j'avais faim et donc pas le temps de la faire. Je me suis contenté de donner une regex qui valide le squelette d'une @ IP.
ceci sera mieux alors:
Code : Sélectionner tout - Visualiser dans une fenêtre à part ^((25[0-5]|2[0-4][0-9]|1[0-9]{1,2}|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{1,2}|[0-9])$
merci pour vos aide ;;;; voila le code executable que je l'ai utilise ;;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 /* * testRegex.java * * Created on 24 juillet 2007, 11:40 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package exp; import java.util.regex.*; public class testRegex { private static Pattern pattern; private static Matcher matcher; public static void main(String args[]) { boolean etat = true; // le separateur est entre les sous chaine est un " . " Pattern p = Pattern.compile("\\."); // séparation en sous-chaînes String[] items = p.split("192.168.3.3"); int i=0; try{ if (items.length != 4){ etat = false; } else{ while(etat && i<items.length){ if (Integer.parseInt((String)items[i])<0 || Integer.parseInt((String)items[i])>255) etat = false; else i++; } } if (etat == true ) System.out.println("IP"); else System.out.println("non"); }catch(Exception r){ //r..printStackTrace();} System.out.println("utiliser que des chiffres pour un adresse ip");} } }
c'est un choix, pour ma part j'aurai plus simplement fait:
Ce que je voulais dire aussi, c'est que if (etat == true ) n'a pas vraiment d'interet, vu que etat est un booleen, if(etat) est suffisant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Pattern p = Pattern.compile("^((25[0-5]|2[0-4][0-9]|1[0-9]{1,2}|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{1,2}|[0-9])$"); Matcher m = p.matcher("255.168.3.3"); if(m.matches()) System.out.println("IP"); else System.out.println("non IP");
Juste une petite remarque...
etat étant un booléen, en général on se contente d'écrire "if(etat) { ... }" au lieu de "if(etat == true) { ... }" qui est redondant
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager