Page 1 sur 1

exclure un motif mais en laisser un autre [RegExp]

Posté : 23 sept. 2010, 18:40
par dredtrake
Bonjour a tous,
j'ai passé la journée à d'utiliser les RegExp javascript afin d'exculre des bouts d'url de ma chaine, mais en vain,

j'ai une url de ce type : http://www.monurl.com/test/55.html?variableExclure=1

sur cette url je souhaiterais que mon motif exclus "variableExclure=1" de la chaine donnée...

http://www.monurl.com/test/55.html?vari ... onserver=1

j'utilise le motifs suivant dans mon objet RegExp :

^(http://)(?!admin)([a-zA-Z0-9:/\.\-]*)([?|&]*)(?!variableExclure=1)([a-zA-Z0-9=&]*)$

donc pour le moment cela fonctionne tout en me laissant la possibilité d'y ajouter d'autre variables, sauf que si je passe ma "variableExplure=1" à un autre endroit dans l'url http://www.monurl.com/test/55.html?vari ... eExclure=1& cela ne fonctionne plus (évidament) et "variableExclure=1" est de nouveau capturé par le RegExp

Ducoup ma question est la suivante :
comment faut-il que je modifie mon pattern pour que je puisse exclure systematiquement "variableExclure=1" de mes chaines quel que soit sa position?

Merci a tous ceux qui prendrons le temps de me lire, :wink:

Re: exclure un motif mais en laisser un autre [RegExp]

Posté : 23 sept. 2010, 20:37
par Cyrano
Je présume que tu voudrais pouvoir reconstruire l'url en excluant ce paramètre spécifique.

Ce que je ferais, ce serait de commencer par isoler juste les paramètres, et ensuite je travaillerais sur la chaine résultante.
Premier masque pour récupérer chaque partie de l'url :

Code : Tout sélectionner

^(http://)([^\?]+)(\?)([^=]+=[^&]+)(&[^=]+=[^&]+)*
La partie 1 nous intéresse peu;
Tu peux isoler les éléments du domaine en commençant par séparer les sous-répertoire dans la partie 2 avec split("/") puis un split(".") pour la partie domaine;
Ensuite tus as les partie 5 et 6 que tu peux traiter de la même manière avec un split("&") pour séparer chaque paramètre;
Enfin, pour chaque paramètre, un split("=") pour séparer le paramètre de sa valeur;

Re: exclure un motif mais en laisser un autre [RegExp]

Posté : 24 sept. 2010, 11:53
par dredtrake
hello Cyrano et merci pour ta réponse,
par contre j'ai un petit soucis a ce niveau je doit pour le moment faire cette vérification que sur un appel de fonction (je suis sur un cms, je suis actuellement en contact avec notre presta pour voir si on peut pas modifier ce fonctionnement un peu brutal) je pense que sinon je n'aurais pas eut de problème, car les règles sont pas folles non plus, mais sur un seul appel js c'est beaucoup plus tendu (voir je me demande si on peux)
en tout cas merci encore.
:D

Re: exclure un motif mais en laisser un autre [RegExp]

Posté : 24 sept. 2010, 12:04
par Cyrano
...je doit pour le moment faire cette vérification que sur un appel de fonction (je suis sur un cms ...
Je dois avouer que ça ne m'explique pas grand chose :shock:
Ou, en d'autre termes, je n'ai rien compris :D

Quelle que soit la manière dont tu implémentes le code, la manière dont il est utilisé n'a à priori aucune espèce d'importance. L'élément de base, c'est une chaine de caractères, rien d'autres. À partir de là, tu peux te créer une petite fonction JavaScript qui reçoit cette chaine en paramètre et qui te retourne la chaine transformée, tu pourrais même ajouter des paramètres supplémentaires comme par exemple une liste de valeurs à exclure.
Par la suite, il te restera à déterminer la manière de l'utiliser selon le code sur lequel tu travailles.