dynamische RegExpr
MS
- javascript
Ich habe das Problem, dass ich eine Funktion brauche, die eine RegExpr dynamisch zusammenbaut. Das ganze soll dann ungefähr so aussehen ...
function replace(src, suchstr, replacestr) {
reg_expr = /kgmhk + suchstr + kgfh/
return src.replace(reg_expr, replacestr);
}
Wie bekomme ich es hin, dass der suchstr in die reg_expr mit eingebaut wird. Der suchstr muss jedoch exakt so erhalten bleiben, er enthält auch /\ und :
function replace(src, suchstr, replacestr) {
reg_expr = /kgmhk + suchstr + kgfh/
Vermutlich bekommst du von deinem Browser hier eine Fehlermeldung (Tipp: verwende Mozilla um JS Programme zu entwickeln, der sagt dir wirklich was falsch ist).
Du willst hier lediglich einen string zusammenfügen wie das geht weißt du?
Wenn nicht schau mal in selfhtml da steht es.
Struppi.
Vermutlich bekommst du von deinem Browser hier eine Fehlermeldung (Tipp: verwende Mozilla um JS Programme zu entwickeln, der sagt dir wirklich was falsch ist).
Du willst hier lediglich einen string zusammenfügen wie das geht weißt du?
Wenn nicht schau mal in selfhtml da steht es.Struppi.
Sorry, keine Fehlermeldung, da ich aj ein RegExpr zusammenbauen will und alle eingebauten Zeichen enthalten sind. Hab auf http://selfhtml.teamone.de/javascript/objekte/regexp.htm mal nachgeschaut, wie die RegExpr zusammengebaut werden und da sind sie halt immer nur statisch drin.
Es geht halt darum, dass es eben KEIN string, sondern ein RegExpr-Ausdruck ist. Die Variante "/zeichenfdjdjg"+suchstr+"dfjdgzeichen/" hab ich schon probiert, da tut sich rein gar nichts.
Es geht halt darum, dass es eben KEIN string, sondern ein RegExpr-Ausdruck ist. Die Variante "/zeichenfdjdjg"+suchstr+"dfjdgzeichen/" hab ich schon probiert, da tut sich rein gar nichts.
Eine RegExpr ist erstmal ein String, wenn sich da nichts tut ist dein Browser kaputt. Zeig mal die Seite wo das passiert was du beschreibst.
Struppi.
Die Seite öffentlich machen kann ich leider nicht, ist ein staatliches Projekt, das darf leider im betastatus nicht raus. Aber hier hast Du schonmal die Original-Funktion, das sollte zum Testen gehen:
suchstr = document.location.protocol+document.location.host+document.location.pathname+document.location.search;
function replace_url(suchstr, replacestr) {
re_expr = /+suchstr+/;
for(i = 0; i < editors.length; i++) {
document.getElementById("editor_field").value = document.getElementById("editor_field").value.replace(re_expr, replacestr);
}
Das RegExpr-Konstrukt ist ein String, das ist richtig, jedoch nicht in der üblichen Schreibweise in " eingeschlossen. Der übliche RegExpr-Ausdruck schaut ja eigentlich so aus:
var Ausdruck = /(\w.+)\s(\w.+)/;
(kopiert aus SELFHTML Javascript->RegExpr)
Dieser Ausdruck funktioniert fehlerfrei. Mein eigentliches Problem ist einfach, dass ich nicht weiß, wie ich das Hinzufügen des Suchstrings in die RegExpr-Schreibweise mache, so dass der Inhalt des Suchstrings gesucht wird und nicht die Variablenbezeichnung des Suchstrings. Auch der Versuch, dies mit eval auszuwerten, scheiterte.
Hey,
Im SelfHTML-Abschnitt zu JS/RegExp gibt es noch einen kleinen und versteckten
Hinweis zu deinem Problem, und ich denke es sollte funktionieren mit:
var regex = new RegExp("/" + suchstring + "/");
(zumindest mit NGS JS gab es dabei keinen Fehler)
MsF,
milky
Genau das war es, was ich gesucht habe. Den kleinen Passus da oben im SELFHTML hab ich wirklich überlesen, weil er nicht mit einem Beispiel gefüllt war. Ich komme jetzt zumindest so weit, dass er "alleinstehende" Worte mit Suchstring-Eingabe findet. Die notwendigen Pflichtausdrücke für den Rest werde ich dann bestimmt noch hinzugebaut bekommen.
hi,
reg_expr = /kgmhk + suchstr + kgfh/
return src.replace(reg_expr, replacestr);
Wie bekomme ich es hin, dass der suchstr in die reg_expr mit eingebaut wird.
auf den ersten blick würde ich sagen,
reg_expr = "/kgmhk" + suchstr + "kgfh/";
wenn's das nicht ist, dann beschreibe bitte dein problem etwas ausführlicher.
gruss,
wahsaga