Ich habe ein problem Regexp Java script erst gibt man ein Text ein dann drunter den String oder zahl die suchen will und er gibt die Position Danke:)?

... komplette Frage anzeigen

2 Antworten

HTML

Text <input type="text" id="eingabe" value="Hallo Welt">
Durchsuchen nach <input type="text" id="suche">
<p id="resultat"></p>

JavaScript

(function(){
var suchfeld = document.getElementById("suche");
var resultat = document.getElementById("resultat");
suchfeld.addEventListener("keyup", function(e) {
var suche = suchfeld.value;
if (suche == "") {
resultat.innerHTML = "Nichts gesucht";
return;
}
var text = document.getElementById("eingabe").value;
var match = text.match(new RegExp(suche));
resultat.innerHTML = match ? "Position: " + match.index : "Kein Treffer";
});
})();



Demo: http://codepen.io/anon/pen/XdGjQd



Antwort bewerten Vielen Dank für Deine Bewertung

Du hast hier zwar schon eine Lösung bekommen, allerdings scheint es mir, wenn ich mir deinen Code anschaue, dass einige Missverständnisse in Bezug auf RegExp bestehen. Ich versuche diese hier mal aufzuklären.

Die Syntax mit den Slashes (/pattern/flags) erstellt ein RegExp-Objekt, das Ergebnis ist also das gleiche wie bei new RegExp("pattern", "flags"). Du benutzt beides doppelt, das brauchst du an der Stelle nicht.

Der Vorteil an dem RegExp-Konstruktor ist der, dass du RegExp-Objekte aus String-Variablen erstellen kannst, da du bei dem Shorthand mit den Slashes keine Variablen einsetzen kannst. D.h. du willst an der Stelle folgendes:

var Suchmuster = new RegExp(f2, "g");

Außerdem macht die Zeile

if(Suchmuster.test() === -1)

relativ wenig Sinn, da einerseits kein String übergeben wird der überprüft werden soll und die test()-Funktion nur true oder false zurückgibt.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?