|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Débutant
Laurent Webmaster Inscription : octobre 2006 Messages : 2 873 ![]() |
Bonsoir,
j'ai une regexp qui sert à contrôler un champ de saisie d'un numéro de téléphone, mais actuellement, elle n'accepte que les caractères numériques (éventuellement précédés par un + ou un -. Or je voudrais qu'elle accepte aussi les tirets et les espaces. Comment adapter la regexp suivante : Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Inscription : février 2009 Messages : 318 ![]() |
devrait convenir pour un numéro de téléphone français, avec un tiré comme séparateur
|
|
|
00
|
|
|
#3 |
|
Débutant
Laurent Webmaster Inscription : octobre 2006 Messages : 2 873 ![]() |
Merci,
je crois la comprendre alors que je ne comprenais pas la précédente. D'ailleurs, une question : le [+-] ne signifie-t-il pas qu'un + ou un - peut être mis optionnellement au début ? Mais petit bémol : ça ne serait pas que pour des numéros français (notamment, autoriser les numéros américains qui peuvent être du type 123-456-789 (je crois, pas sûr), et le séparateur est optionnel (ça peut être un tiret ou un espace ou rien) |
|
|
00
|
|
|
#4 | |
|
Membre éclairé
![]() Inscription : février 2009 Messages : 318 ![]() |
Citation:
Plus précisément ? définit une redondance null ou unique du modèle. Les chrochet permettre juste de regrouper plusieurs valeur possible pour un opérateur. Dans ce cas, soit un + ou un - moins ... Sinon, Code :
var reg = /^0\d(?:(?:-\d{2}){4}|(?:\s\d{2}){4}|\d{8})$/; Pour le modèle USA Code :
/^\d{3}(?:(?:-\d{3}){2}|(?:\s\d{3}){2}|\d{6})$/ |
|
|
|
00
|
|
|
#5 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 007 ![]() |
pour une suite de 5 paires de chiffres séparés pas . - ou espace
a toi de nous dire exactement ce que tu veux valider ... si tu veux que le séparateur soit le même entre chaque paire
__________________
Ma page Developpez Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts) Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir... Votre post est résolu ? Alors n'oubliez pas le Tag ![]() ![]() réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr |
|
|
00
|
|
|
#6 | ||
|
Débutant
Laurent Webmaster Inscription : octobre 2006 Messages : 2 873 ![]() |
Merci de me répondre, mais comme j'aimerais comprendre, j'ai un peu de mal avec la 2e, notamment avec
Citation:
Sinon, ce que je voudrais, c'est une liste de 10 nombres, éventuellement précédés par un +, et éventuellement avec des séparateurs (tiret (-), espace ou rien) ; mais comme la place de ces séparateurs dépend des pays, on autorise les 2 formats : 01sep23sep45sep67sep89 ou 012sep345sep6789 Je corrige ce que je voudrais (et je n'y suis pas arrivé) ; pour accepter les indicatifs internationaux (mais pas forcément présents) et pour être compatible avec le format de tous pays, j'imagine le format suivant : Citation:
|
||
|
|
00
|
|
|
#7 | |||
|
Membre éclairé
![]() Inscription : février 2009 Messages : 318 ![]() |
SpaceFrog a du faire une erreur dans ça règle, je la comprends pas ...
Pour ce qui est des ?: ,ça permet à l'analyseur de ne pas retenir en mémoire le modèle mit en parenthèse. C'est pas forcement utile dans les testes, mais ça peux l'être quand il s'agit de de trouver des motifs particulier. Citation:
A quoi sert le plus? Sinon il n'y a pas beaucoup de modification à faire sur les deux dernières règles que je t'ai proposé.... ca pourrait donner ca en rajoutant juste le + optionnel en début de chaine Code :
bye ! |
|||
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() Inscription : février 2009 Messages : 318 ![]() |
Ok je vois le délire ....
Il te faudra autant de règles que de formats d'entré possible Y'a une liste ici Si tu comprends les 2 règle que je t'ai passé, tu devrais pouvoir t'en sortir. Pour l'indicateur optionnelle, il faudra rajouter au début Pour faire toutes les règles, le plus simple serait de les créer dynamiquement, à partir d'un tableau de String, basé sur le même schéma qu'on retrouve sur le wiki du lien. + 33 (0) C CC CC CC CC par exemple pour la France. Il faudra une routine pour construire le début de la règle correspondant au code international, et une autre pour la compléter en fonction du nombre des groupes, et du nombre de chiffre par groupe. bye |
|
|
00
|
|
|
#9 | ||
|
Débutant
Laurent Webmaster Inscription : octobre 2006 Messages : 2 873 ![]() |
Merci pour ta réponse,
le +, je ne sais pas à quoi il sert, mais j'ai remarqué que les gens le mettent souvent dans les numéros de téléphone. Pour ma gouverne, il sert à quoi le premier ?: (avant la suite des 3 possibilités) ? Enfin, tu m'apportes une solution pour mes 2 premiers cas, mais en fait, je voudrais remplacer ça par un contrôle un peu plus large, qui serait compatible avec le format de la plupart des pays : Citation:
|
||
|
|
00
|
|
|
#10 | |
|
Débutant
Laurent Webmaster Inscription : octobre 2006 Messages : 2 873 ![]() |
Nos réponses se sont croisées...
La liste que tu évoques, je viens de la regarder ! Juste une question par rapport à ça : Ca ne serait pas plutôt (0 pour le cas où il n'y a rien) Enfin, je ne comprends pas ça : Citation:
|
|
|
|
00
|
|
|
#11 | |
|
Membre éclairé
![]() Inscription : février 2009 Messages : 318 ![]() |
Citation:
Code :
Pour ce qui est des ?: ,ça permet à l'analyseur de ne pas retenir en mémoire le modèle mit en parenthèse. |
|
|
|
00
|
|
|
#12 | |
|
Débutant
Laurent Webmaster Inscription : octobre 2006 Messages : 2 873 ![]() |
Citation:
... Et sinon, selon ton explication pour les ?:, ça marcherait quand même s'il n'y en avait pas, si j'ai bien compris (tout en étant moins rapide) ? |
|
|
|
00
|
|
|
#13 | |
|
Membre éclairé
![]() Inscription : février 2009 Messages : 318 ![]() |
Citation:
Code :
Et sinon, selon ton explication pour les ?:, ça marcherait quand même s'il n'y en avait pas, si j'ai bien compris (tout en étant moins rapide) ? Je suis en train d’essayer de faire une fonction pour ton problème, je te la file dans la soiré .... j'ai rien à faire |
|
|
|
00
|
|
|
#14 | ||
|
Débutant
Laurent Webmaster Inscription : octobre 2006 Messages : 2 873 ![]() |
Citation:
Citation:
|
||
|
|
00
|
|
|
#15 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 007 ![]() |
\2 est un backreference qui rappelle le second niveau de parenthèses
__________________
Ma page Developpez Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts) Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir... Votre post est résolu ? Alors n'oubliez pas le Tag ![]() ![]() réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr |
|
|
00
|
|
|
#16 | ||
|
Membre éclairé
![]() Inscription : février 2009 Messages : 318 ![]() |
bon j'ai pas tout fait, mais ca pourrait donner un truc du genre
Code :
Code :
\2 est un backreference qui rappelle le second niveau de parenthèses
|
||
|
|
00
|
|
|
#17 |
|
Débutant
Laurent Webmaster Inscription : octobre 2006 Messages : 2 873 ![]() |
Même si je reste preneur de ce que tu dois faire, j'ai mis une regexp qui couvre tous les cas :
Code :
var re3 =/^(\+\d{1,3})?[-\s\d]{9,15}$/; |
|
|
00
|
|
|
#18 |
![]() ![]() Inscription : janvier 2011 Messages : 2 930 ![]() |
visiblement pas simple de faire une fonction internationale, bon courage.
une Regular Expression Library |
|
|
00
|
|
|
#19 | ||
|
Débutant
Laurent Webmaster Inscription : octobre 2006 Messages : 2 873 ![]() |
Citation:
Citation:
|
||
|
|
00
|
|
|
#20 |
|
Membre Expert
![]() Tlouye Ci Inscription : mars 2004 Messages : 1 450 ![]() |
Sinon plus simple (edit : elle ressemble beaucoup à celle de SpaceFrog
Ca dit que ça peut commencer par +, - ou un chiffre, que chaque chiffre ou groupement de chiffre peut être séparé par un tiret et qu'il ne peut pas y avoir plusieurs tirets consécutifs. Ca ne dit pas la longueur des groupements de chiffre, la longueur totale de la chaîne ni le nombre total de chiffres. Après tu peux faire des posts traitements pour connaître le nombre de chiffres, la longueur totale, ... Sinon je rejoins kimjoa, vaut mieux faire plusieurs règles qu'une seule regex imbitable. PS : En tout cas je crois que tous les membres du forums ont posté ici.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com