par
Berzemus » 09 juin 2009, 17:08
Mert, j'ai oublié de préciser que la partie url n'était qu'un jet sans réelle validité ? Ben voilà, pourtant, je me suis répété 15 fois qu'il fallait que je le dise dans le post, et patraf, j'ai oublié.
Oui bien sur, tu fais bien de le noter, ma partie URL était juste la pour ne pas donner un regex vide, mais je ne pourrais le conseiller. C'était surtout l'avant et l'après qui étaient importants.
Pour ce qui est du point et de la gestion de fin d'url, pourquoi ne pas utiliser une liste avec des caractères autorisés en fin d'url ?
Ici appliqué à mon Regex, pour que ce soit clair:
(<a[^>]+>)?(http://[\w\.-/\?=+&%_]+[\w/])(</a>)?
Donc j'autorise ici, en fin d'url, toutes les lettres et le slash.
Et la je rebondis sur une erreur que tu as faite:
[^<a href="]
Ne veut pas du tout dire ce que tu penses. En fait, ce petit bout de regex valide tout caractère qui n'est ni un <, ni un a, ni un h, ni un r (etc..). Entre crochets [], les caractères sont considérés un à un, jamais en groupe. Dés que tu as quelque chose entre [], tu es dans un mode spécial ou les symboles ont une autre signification.
Donc il suffit d'ajouter en fin de ton regex qui valide les URL une simple liste de caractères que tu acceptes en fin d'url.
EDITH:
Ben non, j'ai mal lu ta question. Que je suis bête, j'imaginais la problématique d'une URL dans une phrase avec un point derrière, ce qui est aussi un problème. Pour ton souci, oui, c'est vrai, et c'est inévitable. Alors tu devrait travailler avec des filtres, et tester l'existence des domaines que tu trouves.
Mert, j'ai oublié de préciser que la partie url n'était qu'un jet sans réelle validité ? Ben voilà, pourtant, je me suis répété 15 fois qu'il fallait que je le dise dans le post, et patraf, j'ai oublié.
Oui bien sur, tu fais bien de le noter, ma partie URL était juste la pour ne pas donner un regex vide, mais je ne pourrais le conseiller. C'était surtout l'avant et l'après qui étaient importants.
Pour ce qui est du point et de la gestion de fin d'url, pourquoi ne pas utiliser une liste avec des caractères autorisés en fin d'url ?
Ici appliqué à mon Regex, pour que ce soit clair:
[color=gray](<a[^>]+>)?(http://[\w\.-/\?=+&%_]+[/color][b][\w/][/b][color=gray])(</a>)?
[/color]
Donc j'autorise ici, en fin d'url, toutes les lettres et le slash.
Et la je rebondis sur une erreur que tu as faite:
[b][^<a href="][/b]
Ne veut pas du tout dire ce que tu penses. En fait, ce petit bout de regex valide tout caractère qui n'est ni un <, ni un a, ni un h, ni un r (etc..). Entre crochets [], les caractères sont considérés un à un, jamais en groupe. Dés que tu as quelque chose entre [], tu es dans un mode spécial ou les symboles ont une autre signification.
Donc il suffit d'ajouter en fin de ton regex qui valide les URL une simple liste de caractères que tu acceptes en fin d'url.
EDITH:
Ben non, j'ai mal lu ta question. Que je suis bête, j'imaginais la problématique d'une URL dans une phrase avec un point derrière, ce qui est aussi un problème. Pour ton souci, oui, c'est vrai, et c'est inévitable. Alors tu devrait travailler avec des filtres, et tester l'existence des domaines que tu trouves.