regulärer Ausdruck
Schmidt
- javascript
0 Ingo Turski0 Schmidt0 Cheatah0 amolip0 Ingo Turski0 Schmidt
Ich grüße euch.
In Quelltexten befinden sich Verweise dieser form:
<a href="http://seite.de/irgend/etwas/item.php?id=b0c39984c83195b14a92fb39eb1c06c0">
Als id-Wert wird immer ein Hexadezimalwert übertragen.
Ich möchte per Javascrit diesen Hexadezimalwert auslesen.
Die Funktion match()
scheint mir die die bestgeeignetste zu sein.
Ich hab jedoch ein Problem den richtigen regulären Ausdruck zu formulieren.
So sieht mein reg.Ausruck momentan aus:
document.getElementsByTagName("a")[$i].href.match(/item\.php\?id=([0-1a-f]+)?/i);
Das Problem:
Es wird nicht die komplette Hexadezimalzahl ausgegeben, nur ein oder zwei Zeichen davon.
1. Wie muss der reg. Ausruck geändert werden, damit ich die komplette Hexadezimalzahl ausgegeben bekomme? (Ich vermute, es ist ein einziges Zeichen hinzuzufügen, komme aber beim besten willen nicht darauf.)
2. Gibt es eine Charakterklasse für Hexadezimalwerte wie [%hex%] welche ich anstelle von [0-1a-f] verwenden könnte?
Ich danke euch.
Schönen Gruß
Schmidt
Hi,
Die Funktion
match()
scheint mir die die bestgeeignetste zu sein.
Sofern keine weiteren Parameter folgen, reichen bereits einfache Stringfunktionen.
Ich hab jedoch ein Problem den richtigen regulären Ausdruck zu formulieren.
So sieht mein reg.Ausruck momentan aus:
document.getElementsByTagName("a")[$i].href.match(/item.php?id=([0-1a-f]+)?/i);
>
> Das Problem:
> Es wird nicht die komplette Hexadezimalzahl ausgegeben, nur ein oder zwei Zeichen davon.
warum gibst Du das über das letzte "?" dann so vor - sprich beschränkst die "Gierigkeit" des Ausdrucks?
freundliche Grüße
Ingo
--
[[barrierefrei Ingo Webdesign](http://www.1ngo.de/web/) » [Suchmaschinenoptimierung](http://www.1ngo.de/web/seo.html) | [em?](http://www.1ngo.de/web/em.html) | [IE7 - Bugs](http://www.1ngo.de/web/ie7.html)]
Hallo Ingo.
Die Funktion
match()
scheint mir die die bestgeeignetste zu sein.
Sofern keine weiteren Parameter folgen, reichen bereits einfache Stringfunktionen.
Welche sind konkret gemeint?
document.getElementsByTagName("a")[$i].href.match(/item.php?id=([0-1a-f]+)?/i);
> >
> > Das Problem:
> > Es wird nicht die komplette Hexadezimalzahl ausgegeben, nur ein oder zwei Zeichen davon.
> warum gibst Du das über das letzte "?" dann so vor - sprich beschränkst die "Gierigkeit" des Ausdrucks?
Muss nicht da hin, stimmt. Sah es aber nicht als Ursache wegen dem + hinter [0-1a-f].
~~~javascript
match(/item\.php\?id=([0-1a-f]+)/i)
sowie
match(/item\.php\?id=([0-1a-f])/i)
sowie
match(/item\.php\?id=([0-1a-f])+/i)
Funktionieren jedoch auch nicht. Einzige Unterschiede sind in der Anzahl der Hex-Ergebnisse. Mal ein, mal zwei Zeichen.
Noch eine Idee?
Hi,
Sah es aber nicht als Ursache wegen dem + hinter [0-1a-f].
vielleicht solltest Du noch mal _vor_ das + hinter dem [0-1a-f] schauen.
Noch eine Idee?
Schau genau hin, und zwar nicht nur null bis ein Mal.
Cheatah
Hallo Schmidt,
nur ein kleiner Schreibfehler in der Zeichenklasse.
falsch: [0-1a-f]
richtig: [0-9a-f] bzw.[\da-f]
Die Gruppierung liefert zwar kein falsches Ergebnis, ist aber überflüssig.
statt: ([0-9a-f]+)?
besser: [0-9a-f]+ oder [0-9a-f]*
Gruß Uwe
nur ein kleiner Schreibfehler in der Zeichenklasse.
Danke Uwe und Cheatah!
match(/item.php?id=([a-f0-9]+)/i)
funktioniert jetzt tatsächlich.
Sowas selbst zu finden ist wirklich schwer. Man übersieht es besonders gerne.
Die Gruppierung liefert zwar kein falsches Ergebnis, ist aber überflüssig.
statt: ([0-9a-f]+)?
besser: [0-9a-f]+ oder [0-9a-f]*
Die Gruppierung ist nicht überflüssig.
Mein erklärtes Ziel ist "Ich möchte per Javascrit diesen Hexadezimalwert auslesen."
Lasse ich die Gruppierung weg, kriege ich nicht nur den Hex-Wert zurück, sondern den ganzen Suchstring inklusive "item.php?id=". Ich möchte nur den HexString.
Ich danke euch allen!
Hallo,
Die Gruppierung ist nicht überflüssig.
Mein erklärtes Ziel ist "Ich möchte per Javascrit diesen Hexadezimalwert auslesen."
Lasse ich die Gruppierung weg, kriege ich nicht nur den Hex-Wert zurück, sondern den ganzen Suchstring inklusive "item.php?id=". Ich möchte nur den HexString.
- (1 oder mehr) ist auch besser als * (0 oder mehr), denn keinen HexString suche ich ja nicht.
da musst du jetzt aber aufpassen.
Mit »([0-9a-f]+)?« triffst du auch "keinen HexString".
Also »([0-9a-f]+)«
Gruß Uwe
Hi,
Sofern keine weiteren Parameter folgen, reichen bereits einfache Stringfunktionen.
Welche sind konkret gemeint?
indexOf() und substr().
freundliche Grüße
Ingo
Sofern keine weiteren Parameter folgen, reichen bereits einfache Stringfunktionen.
Welche sind konkret gemeint?
indexOf() und substr().
Vor dem Hintergrund, dass ich den gefundenen HexString weiterverarbeiten möchte, ist match() praktischer.
Danke.
Hi,
indexOf() und substr().
Vor dem Hintergrund, dass ich den gefundenen HexString weiterverarbeiten möchte, ist match() praktischer.
praktischer ja, aber auch schneller als:
var e = document.getElementsByTagName("a")[$i].href;
var p = e.indexOf("item.php?id=");
var x = (p==-1) ? "" : e.substr(p+12);
?
freundliche Grüße
Ingo