Bonjour,
J'ai un petit bout de code que j'utilise assez régulièrement en PHP pour capturer des URL :
1 2 3 4 5 6 7 8 9 | <? $patternUrl = '(?xi)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`\!()\[\]{};:\'".,<>?«»“”‘’]))'; $t = preg_replace_callback("!$patternUrl!i", function($matches){ if(strlen($matches[0]) > 50){ return '<a href="'.$matches[0].'">'. substr($matches[0], 0, 20) .' ... '. substr($matches[0], -20) .'</a>'; } else { return '<a href="'.$matches[0].'">'.$matches[0].'</a>'; } }, $t); |
J'essaye de convertir ce code en JS, mais c'est la que je vois mes limites en regex, je n'y arrive pas.
actuellement j'ai ceci :
1 2 3 4 5 6 7 | var t = 'hello http://google.be'; var regex = !(?xi)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`\!()\[\]{};:\'".,<>?«»“”‘’]))!i; t = t.replace(regex, function($1) { console.log($1); return '<a href="' + $1 + '">' + $1 + '</a>'; }); |
Et forcément ça ne marche pas. Donc si quelqu'un pouvait me tendre la main ça serait sympa .
Merci
+0
-0