Bonjour tous,
je veux un expression reguliere qui valide un champ qui peux contenir les valeurs suivant:
1,2,3,5
ou 1,2
ou 1,3,9,8,...
Merci d'avance
Bonjour tous,
je veux un expression reguliere qui valide un champ qui peux contenir les valeurs suivant:
1,2,3,5
ou 1,2
ou 1,3,9,8,...
Merci d'avance
Une suite de chiffres (ou de nombres entiers ?) séparés par des virgules ?
C'est plutôt facile...
Si tu nous donnais ton essai ?![]()
Consulte la JavaDoc de Pattern, elle indique comment construire des regexp Java -_-°.
Soit dit en passant, cette JavaDoc est indiquée dans la JavaDoc des différentes méthodes de String à base de regexp...
Eh, oh, laisse-nous un peu de temps, on n'a pas que ça à faire non plus (par exemple là je serais plutôt censée être en train de bosser).
Bah déjà cette expression n'est pas valide.
L'exécution du code suivant :
donne l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Pattern p= Pattern.compile("/[0-9],*$/");
=> pourquoi as-tu introduit des accolades ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part java.util.regex.PatternSyntaxException: Illegal repetition near index 5
=> en Java, les '/' sont considérés comme des caractères dans l'expression régulière... il faut les enlever
=> après correction du point précédent, le caractère de répétition '*' ne s'appliquera qu'à la virgule et non à l'ensemble chiffre+virgule
=> après correction du point précédent, l'expression validera les répétitions de chiffre+virgule qui se terminent donc par une virgule
Note supplémentaire : si tu utilises la fonction Matcher#matches(), tu n'obtiendras true que si l'ensemble de la chaîne testée correspond à l'expression régulière, donc le $ à la fin est inutile dans ce cas.
Je pense qu'il a rajouter les deux / parce qu'il utilise javascript car on ecrit les expression régulière entre /expression/
la solution à ton problème est:
A++
Code : Sélectionner tout - Visualiser dans une fenêtre à part Pattern ptrn = Pattern.compile("\\d(,\\d)*");
^\d{1}(,\d{1})*$
Celle-ci est stricte, car elle ne cherche que cette suite "1,4,4,8" ou "5", sans autre caratère avant ou après.
ex: 5,1,5,1,1,5,1
\d{1}(,\d{1})*
celle-ci extrait la recherche dans une ligne type: "eeioej 5,6,5ekonclkdnet" trouve, comme l'autre:
5,6,5
etc...
Pour les extractions (sur la première par éxemple), il faut des parenthèses sur l'ensemble des répétitions:
(\d{1}(,\d{1})*)
Partager