JavaScript RegEx Frage

Elbo

Nur so...
ID: 51218
L
7 Mai 2006
713
21
Hallo,

ich verzweifel hier an einem greasemonkey-script bei den regex...

Ich möchte gerne links ändern, sodass eine Zahlenreihe in einen anderen Link übernommen wird...

Ich habe mehrere Ansätze versucht (https://userscripts.org/scripts/show/44157 und auch https://userscripts.org/scripts/show/27909)

Das eigentliche Problem ist, dass die Nummer inmitten des Links steht.

www.URL.de/123456.php soll zu www.andereURL.de/index.php?page=15829 werden.

Wenn ich das manuell eingebe (also 1 zu 1) funktioniert es einwandfrei... ich bekomm es nur mit RegEx nicht hin :(

Wäre toll, wenn mir jemand helfen könnte...

Danke!

Gruss
Elbo
 
Wie gesagt habe ich auf den beiden vorhhandenen Scripten versucht aufzubauen und das hat so überhaupt nicht geklappt, dass ich das wieder deinstalliert habe (was bei greasemonkey einem löschen gleichkommt :( )
 
Ich mit meinen bescheidenen RegEx-Kenntnissen würde jetzt spontan folgendes sagen (ungetestet):

Code:
@https://www.url.de/(\d*).php@
 
Also das hier ist, wenn die Zahl am Ende steht:

modifyLink_Target ("","www.meineURL.com/detail.php?","","www.andereURL.com/addfriend.php?");

Ich versuchs mal wie Sebmaster das vorgeschlagen hat...
 
Geht nicht...

Die Frage ist ja auch, wie bekomme ich die Zahlen in den anderen Link?

Ich habe es jetzt so versucht:
modifyLink_Target ("","www.meineURL.com/(\d*).php","","www.andereURL.com/addfriend.php=(\d*)");

Ich weiss auch nicht... vielleicht ist es einfach zu spät für mich, aber es macht einfach nicht "klick" bei mir...
 
Nein, die kommt nicht aus dem nichts... sie ist Teil des Scripts, was ich oben verlinkt habe...

Code:
function modifyLink_Target (ExpectedName, ExpectedTarget, DesiredName, DesiredTarget, RegexEnabled){
	if (RegexEnabled != 1){
		toReplace = /(\/|\.|\*|\+|\?|\||\(|\)|\[|\]|\{|\}|\\|\^|\$)/g;
		ExpectedName = ExpectedName.replace(toReplace, "\\$1");
		ExpectedName = "^" + ExpectedName + "$";
	}
	re = new RegExp(ExpectedName)
	for(i = 0; i < link.snapshotLength; i++) {
		tmp = link.snapshotItem(i);
		if(re.test(tmp.href)){
		DesiredTargetNew = tmp.href.replace(ExpectedTarget, DesiredTarget);
			if (DesiredName != ""){
				tmp.innerHTML = DesiredName;
			}
			if (DesiredTarget != ""){
				tmp.href = DesiredTargetNew;
			}
		}
                else if(re.test(tmp.href)){
			if (DesiredName != ""){
				tmp.innerHTML = DesiredName;
			}
			if (DesiredTarget != ""){
				tmp.href = DesiredTarget;
			}
		}
	}				
}


Ich möchte ja nichts replacen, sondern ich möchte die Zahlenkette mit in den anderen Link packen..

Also im Grunde möchte ich die aus dem ersten Link (dem original) speichern und beim 2. Link einsetzen...
 
Also wenn ich den totalen Durchblick hätte bräuchte ich hier ja keine Fragen zu stellen...

Dass ich Java-Script lernen soll ist ja schon nachvollziehbar, da ich das ja genau einmal brauche (nämlich für dieses Greasemonkey-Script), dass hier alles behandelt wird, nur die eigentliche Frage nicht, auch...

Was ich mich frage ist, was das alles mit dem eigentlichen Problem zu tun hat...

Also soll ich die Funktion jetzt aufschlüsseln und wir diskutieren darüber, oder worauf zielt deine Frage ab?
 
Mir gehts darum, ob du weißt, wie diese Funktion zu bedienen ist, und dir nur der Regex fehlt, oder ob dir eigentlich die komplette Funktion an sich fehlt;)

Was ich mich noch frage: Wohin willst du die Zahl dann übertragen? Willst dus einfach in einer Variable haben? Dann such ich dir mal eben was raus
 
Hmmm..

Also wenn ich die Zahl aus dem ersten in einer variablen habe, dann kann ich die einfach an die andere anhängen...

Aber du hast recht... irgendwie ist das schon ersetzen...

Ich bin zu alt, zu müde und zu unkonzentriert heute... (das mit dem Alter ändert sich morgen leider auch nicht ;) )
 
Ich hab dir mal eben den folgenden Code zurechtgemacht, am Ende steht die Zahl im Alert;)

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <meta name="author" content="Sebastian Mayr">

    <title>Test</title>
    <script type="text/javascript">
    window.onload = function() {
        var ergebnis = document.getElementsByTagName('body')[0].innerHTML.match(/http:\/\/www.meineURL.de\/guest_(\d*).php/);
        alert(ergebnis[1]);
    };
    </script>
</head>

<body>https://www.meineURL.de/guest_12345.php</body>
</html>

Falls du doch was anderes brauchst, dann sag, was du willst^^
 
Das sieht so aus, als wenn ich das verwenden könnte... ich schreib mir das mal in Greasemonkey um..

Vielen Dank!