2010-06-15 7 views
0

s'il vous plaît aidez-moiJavaScript Les expressions régulières, et à remplacer le lien

<html> 
    <body> 
     http://domainname.com/abc/xyz.zip 
     http://domainname2.com/abc/xyz.zip 

</body> 
</html> 

Je veux remplacer par lien et eteint comme

<html> 
    <body> 
     <a href="http://domainname.com/abc/xyz.zip">http://domainname.com/abc/xyz.zip</a> 
     <a href="http://domainname2.com/abc/xyz.zip">http://domainname2.com/abc/xyz.zip</a> 

</body> 
</html> 

grand merci

+0

duplication possible de [remplacer l'URL par des liens HTML javascript] (http://stackoverflow.com/questions/37684/replace-url-with-html-links-javascript) – Skilldrick

Répondre

1

Vous should not use regular expressions pour analyser HTML.

+2

Il ne l'est pas, il veut une expression régulière à remplacer Texte avec HTML. –

+4

Sauf que cela nécessite que vous soyez conscient du contexte du lien. Que faire si le lien est déjà à l'intérieur d'une balise ''? – VeeArr

0

Essayez cette fonction:

function linkify(element) { 
    var children = element.childNodes, 
     stub = document.createDocumentFragment(); 
    for (var i=0; i<children.length; ++i) { 
     if (children[i].nodeType === Node.TEXT_NODE) { 
      var parts = children[i].nodeValue.split(/(http:\/\/\S+)/); // adjust regex 
      if (parts.length > 1) { 
       for (var j=0; j<parts.length; ++j) { 
        if (j % 2 === 1) { 
         var link = document.createElement("a"); 
         link.setAttribute("href", parts[j]); 
         link.appendChild(document.createTextNode(parts[j])); 
         stub.appendChild(link); 
        } else { 
         stub.appendChild(document.createTextNode(parts[j])); 
        } 
       } 
       continue; 
      } 
     } 
     stub.appendChild(children[i]); 
    } 
    document.write(stub.childNodes.length); 
    element.parentNode.replaceChild(stub, element); 
} 
linkify(document.body); 

C'est pure manipulation DOM. Cette fonction linkify s'attend à ce que l'argument soit un HTMLElement. Vous avez juste besoin d'ajuster l'expression régulière pour récupérer les URL.

Questions connexes