pryos.org: RegEx: Links finden, jedoch keine Anker und javascripts

Ich möchte alle links finden und ersetzten, welche kein anker sind und kein javascript enthalten.

RegEx:
var regsearch = /<a\b(.+?)href=("|')(?!\s?(javascript|#))(.+?)(\2)/gi;
Beispiel Quellcode:

<html>  
<head>  
	<title>Hauptmenü</title>  
</head>  
<body>  
Links:  
<menu>  
	<li><a target="_blank" href="/site/test.htm">Test1</a></li>  
	<li><a href="/site/test2.htm">Test2</a></li>  
</menu>  
Javascript Links:  
<ol>  
	<li><a href="javascript:location.href='/site/test.htm';">Test1</a></li>  
	<li><a href="javascript:location.href='/site/test2.htm';">Test2</a></li>  
</ol>  
onClick Events:  
<ol>  
	<li><a href="#" onclick="location.href='/site/test.htm';">Test1</a></li>  
	<li><a href="#" onclick="location.href='/site/test2.htm';">Test2</a></li>  
</ol>  
</body>  
</html>  

  1. Achso ja, die Frage:

    Sie macht es nicht, sie ignoriert den href und springt zum 2ten href im js Befehl. Warum?

  2. Hi,

    Ich möchte alle links finden und ersetzten, welche kein anker sind und kein javascript enthalten.

    Anker sind beliebige Elemente mit einer ID. Wenn Du nicht zufällig normale Links ausklammern willst, die eine ID besitzen, sind das also alle Links. Um JavaScript benutzerinduziert auszuführen, sind ebenfalls fast beliebige Elemente nutzbar - hierzu <a>-Elemente zu missbrauchen, obwohl Du mit ihnen keine Ressource verlinken willst, ist Schwachfug.

    Fazit: Repariere Deinen offenbar defekten Struktur-Code, dann findest Du Deine Links mit document.links oder document.getElementsByTagName('a').

    <li><a href="javascript:location.href='/site/test.htm';">Test1</a></li>  
    

    <li><a href="#" onclick="location.href='/site/test.htm';">Test1</a></li>

      
    Dies ist exakt das, was man \*nicht\* tut.  
      
    Cheatah  
    
    -- 
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|  
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html  
    X-Will-Answer-Email: No  
    X-Please-Search-Archive-First: Absolutely Yes
    
    1. Hi,

      »» Ich möchte alle links finden und ersetzten, welche kein anker sind und kein javascript enthalten.

      Anker sind beliebige Elemente mit einer ID. Wenn Du nicht zufällig normale Links ausklammern willst, die eine ID besitzen, sind das also alle Links. Um JavaScript benutzerinduziert auszuführen, sind ebenfalls fast beliebige Elemente nutzbar - hierzu <a>-Elemente zu missbrauchen, obwohl Du mit ihnen keine Ressource verlinken willst, ist Schwachfug.

      Fazit: Repariere Deinen offenbar defekten Struktur-Code, dann findest Du Deine Links mit document.links oder document.getElementsByTagName('a').

      »» ~~~html

      <li><a href="javascript:location.href='/site/test.htm';">Test1</a></li>  
      

      »» <li><a href="#" onclick="location.href='/site/test.htm';">Test1</a></li>

      
      >   
      > Dies ist exakt das, was man \*nicht\* tut.  
      >   
      > Cheatah  
      >   
      
      Zuerst einmal danke für die Antwort.  
      Ich weiß das man so etwas nicht macht, darum geht es mir auch nicht.  
      Mein Plan war es, alle Links in einem Text per replace durch eine Javascript Funktion zu ersetzten.  
        
      Jedoch muss ich an dieser Stelle einfach verhindern, das ich Javascript umschreibe, da dies kein Sinnvolles Ergebnis liefern würde.  
      Und unabhängig davon was ich machen würde, muss ich vom Schlimmst möglichen dabei ausgehen, da ich eine Art Template daraus basteln  möchte. Und nicht jeder den ich kenne, schreibt sauberes HTML.  
        
        
      Die `document.getElementsByTagName`{:.language-javascript} Funktion kann ich leider nicht verwenden, da der Quelltext zu diesem Zeitpunkt noch nicht geladen wurde,  
      Jedoch kann ich per RegEx mir alle (<a\b.\*?>) Elemente heraussuchen und einzeln bearbeiten. Dies wollte ich zwar verhindern, aber es geht auch.