11548 sujets

JavaScript, DOM et API Web HTML5

Bien le bonjour amis codeurs.

Je viens vers vous aujourd'hui avec un souci de Regex (Oui, encore...), en effet je cherche à manipuler des URL en Js grâce à des regex, le hic, c'est que l'une d'entre elle ne fonctionne pas.

Ou plutot, je ne parviens pas au résultat souhaité.

Voici donc un exemple d'URL que j'ai:

http://sousdomaine.domaine.tld/pages/foo.php

Ici, je cherche, grâce à ma regex à ne récupérer que le foo de l'URL.
Alors, j'arrive à le faire, mais en deux étapes, alors que je pense que c'est faisable en une seul vue que sous PHP je le fait déjà Smiley lol

Voici comment je procède:

1°/- J'analyse la dite URL, puis, je lui applique une premiere regex de ce type:

[b]regex = "[A-Za-z]+.php"[/b]


Ce qui donne comme résultat la sortie suivante:

[b]regex = foo.php[/b]


2°/- J'analyse le premier résultat avec une nouvelle regex de ce type:

[b]regex2 = "(.php)"[/b]


Ce qui donne comme résultat la sortie suivante:

[b]regex2 = foo[/b]


Comme vous pouvez le voir, c'est pas le top niveau optimisation des ressources Smiley lol surtout que c'est du Js et donc, ça pompe chez l'utilisateur final.

Donc, ce que je souhaiterais c'est avoir ce résultat en une seul regex.
Voici ce que j'avais pensé utiliser, mais, qui, apparemment, n'est pas bon:

[b]regex = "[a-zA-Z]+[^(.php)]"[/b]


Bref, si une âme charitable voulait bien m'aiguiller je lui en serait gré Smiley lol
J'avoue que les Regex, j'ai beau en faire, j'arrive pas à tout assimiler.
Modifié par DR I (16 Jan 2012 - 13:58)
Bonjour,

essaye :

var url = "http://sousdomaine.domaine.tld/pages/foo.php";
alert(url.replace(/^.*\/(.*)\.php$/, "$1"))
Bon, bah, après test, ça ne fonctionne pas Smiley lol
Ton regex select toute l'url Smiley lol

Donc, en fait, je pense que ce genre de recherche par exclusion n'est pas faisable sur une URL en une seul fois, par contre, faire un truc du genre:

URLSplit, puis, regex sur le dernier $x coûtera moins en conso et sera plus élégant Smiley lol

EDIT:

En fait si, en faisant ça, ça fonctionne Smiley lol , donc dés le départ j’étais pas loin XD

[b]regex = /\/([a-zA-Z]+)\.php$/[1][/b]

Modifié par DR I (16 Jan 2012 - 13:58)
En fait, j'avais un soucis dans ma façon de forger les regex sous Js.

Comme il existe deux façon de faire, j'ai mélangé les deux sans le vouloir.
De plus, le fait de faire ça ne génère pas d'erreur, juste que l’interpréteur Js n'est pas capable de gérer une sombre histoire de drapeaux Smiley cligne

Merci à tous les intervenants en tous cas Smiley lol
Modifié par DR I (16 Jan 2012 - 16:38)
Faut voir simple Smiley smile

En php (car c'est généralement ce qu'on connait Smiley smile ), tu as preg_replace ou preg_match ... suffit de retirer le preg_ et de mettre le regex sans quote

php : preg_match('regex',$variable);
js : variable.match(regex);

php : preg_replace('regex', '$1',$variable);
js : variable.replace(regex, '$1');