Mathias Brodala: Reguläre Ausdrücke

Beitrag lesen

Hallo Martin.

string = '<p><a href="http://dcbkk16.home.net/_admin/#Beitrag zur freiwilligen Krankenversicherung" class="interner_link" title="Beitrag zur freiwilligen Krankenversicherung"><p><a href="http://dcbkk16.home.net/_admin/#Beitrag zur freiwilligen Krankenversicherung" class="interner_link" title="Beitrag zur freiwilligen Krankenversicherung">';

Ich möchte alle Links mit "#" dahingehend verändern,
dass sie mit "#" beginnen.

string = string.replace('http://dcbkk16.home.net/_admin/', '');

Reguläre Ausdrücke sind hier überflüssig.

Ich suche also nach allen 'href="<irgendwas>#' und möchte sie ersetzen durch 'href="#'

nach meine Verständnis müsste das so lauten:

string.replace(/href=\".+#/g, "href=\"#");

Also die Zeichenkette „href="“, dann irgendetwas so viel wie möglich und irgendwann einmal ein „#“.

aber das Ergebnis ist:

string = '<p><a href="#Beitrag zur freiwilligen Krankenversicherung" class="interner_link" title="Beitrag zur freiwilligen Krankenversicherung"><p>';

Stimmt exakt.

... es wird also die Hälfte verschluuckt, was ich mir nicht erklären
kann.

Kann mir das jemand erklären ?

Siehe oben. Dein Muster macht nur, was es soll. Es ist momentan einfach noch zu gierig, was du abstellen kannst:

string.replace(/href=\"([^#]+)#/g, "href=\"#");

Hier beschränkst du also die Menge der Zeichen vor dem „#“ auf alles AUSSER diesem Zeichen, weshalb hier schrittweise ausgeführt wird.

Einen schönen Mittwoch noch.

Gruß, Mathias

--
ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
debian/rules