Ich möchte Werten mit Regex ein (variables) Tag hinzufügen. Das Muster funktioniert gut mit PHP, aber ich habe Probleme, es in JavaScript zu implementieren.
Das Muster ist ( value
ist die Variable):
/(?!(?:[^<]+>|[^>]+<\/a>))\b(value)\b/is
Ich bin den Backslashes entkommen:
var str = $("#div").html();
var regex = "/(?!(?:[^<]+>|[^>]+<\\/a>))\\b(" + value + ")\\b/is";
$("#div").html(str.replace(regex, "<a href='#" + value +">" + value + "</a>"));
Aber das scheint nicht richtig zu sein, ich habe das Muster protokolliert und es ist genau das, was es sein sollte. Irgendwelche Ideen?
javascript
regex
string
Borstenhorst
quelle
quelle
value
eine Variable?Antworten:
Um den regulären Ausdruck aus einer Zeichenfolge zu erstellen, müssen Sie das JavaScript-
RegExp
Objekt verwenden .Wenn Sie auch mehr als einmal übereinstimmen / ersetzen möchten, müssen Sie das
g
Flag (globale Übereinstimmung) hinzufügen . Hier ist ein Beispiel:JSFiddle-Demo hier.
Im allgemeinen Fall maskieren Sie die Zeichenfolge, bevor Sie sie als regulären Ausdruck verwenden:
Nicht jede Zeichenfolge ist jedoch ein gültiger regulärer Ausdruck: Es gibt einige spezielle Zeichen wie
(
oder[
. Um dieses Problem zu umgehen, maskieren Sie einfach die Zeichenfolge, bevor Sie sie in einen regulären Ausdruck verwandeln. Eine Utility-Funktion dafür finden Sie im folgenden Beispiel:JSFiddle-Demo hier.
Hinweis: Der reguläre Ausdruck in der Frage verwendet den
s
Modifikator, der zum Zeitpunkt der Frage noch nicht vorhanden war, aber heute existiert - eins
( dotall ) Flag / Modifikator in JavaScript .quelle
s
Modifikator, siehe erneut den MDN-Link in der Antwortnotiz.Wenn Sie versuchen, einen Variablenwert im Ausdruck zu verwenden, müssen Sie den RegExp- "Konstruktor" verwenden.
quelle
Sie brauchen das nicht
"
, um einen regulären Ausdruck zu definieren, also nur:Wenn
value
es sich um eine Variable handelt und Sie einen dynamischen regulären Ausdruck wünschen, können Sie diese Notation nicht verwenden. Verwenden Sie die alternative Notation.String.replace
Akzeptiert auch Zeichenfolgen als Eingabe, sodass Sie dies tun können"fox".replace("fox", "bear");
Alternative:
Beachten Sie, dass , wenn
value
wie reguläre Ausdrücke Zeichen enthält(
,[
und?
Sie müssen sie entkommen.quelle
Ich fand diesen Thread nützlich - also dachte ich, ich würde die Antwort auf mein eigenes Problem hinzufügen.
Ich wollte eine Datenbankkonfigurationsdatei (datastax cassandra) aus einer Knotenanwendung in Javascript bearbeiten und für eine der Einstellungen in der Datei musste ich eine Zeichenfolge abgleichen und dann die darauf folgende Zeile ersetzen.
Das war meine Lösung.
Nach dem Ausführen wird die vorhandene Datenverzeichniseinstellung in die neue geändert:
Konfigurationsdatei vor:
Konfigurationsdatei nach:
quelle
Ich stellte fest, dass ich das \ b doppelt zerschneiden musste, damit es funktioniert. Um beispielsweise "1x" -Wörter mithilfe einer Variablen aus einer Zeichenfolge zu entfernen, musste ich Folgendes verwenden:
quelle
https://jsfiddle.net/9f0mb6Lz/
Hoffe das hilft
quelle
Viel einfacher: Verwenden Sie Vorlagenliterale.
quelle