wake-up-neo.net

javascript new regexp von string

Ich versuche, etwas Ähnliches zu schaffen:

var regexp_loc = /e/i;

ich möchte jedoch, dass der Regex auf einen String angewiesen ist, also habe ich versucht, neues RegExp zu verwenden, konnte aber nicht das bekommen, was ich wollte.

Grundsätzlich möchte ich, dass die e in der obigen Regexp eine String-Variable ist, aber ich versage die Syntax.

Ich habe so etwas ausprobiert:

var keyword = "something";

var test_regexp = new RegExp("/" + keyword + "/i");

Grundsätzlich möchte ich nach einer Unterzeichenfolge in einer größeren Zeichenfolge suchen und dann die Zeichenfolge durch eine andere Zeichenfolge ersetzen, ohne Berücksichtigung der Groß- und Kleinschreibung.

viele Grüße Alexander

51
Alexander

Sie müssen den Parameter second übergeben :

var r = new RegExp(keyword, "i");

Sie müssen auch alle Sonderzeichen in der Zeichenfolge mit Escapezeichen versehen, um reguläre Ausdrücke zu verhindern.

71
SLaks

Denken Sie auch daran, auf Escape-Zeichen in einer Zeichenfolge zu achten ... 

Wenn Sie beispielsweise nach einer einzelnen Nummer suchen möchten,\d {1}, und Sie haben dies getan ...

var pattern = "\d{1}";
var re = new RegExp(pattern);

re.exec("1"); // fail! :(

das würde fehlschlagen, da das Anfangszeichen\ein Fluchtsymbol ist. Sie müssten "sozusagen der Flucht entkommen".

var pattern = "\\d{1}" // <-- spot the extra '\'
var re = new RegExp(pattern);

re.exec("1"); // success! :D
40
Ric Paton

Wenn Sie den RegExp-Konstruktor verwenden, brauchen Sie die Schrägstriche nicht wie bei einem Regex-Literal. So:

new RegExp(keyword, "i");

Beachten Sie, dass Sie die Flags im zweiten Parameter übergeben. hier für weitere Informationen.

11
James Sulak

Möchten Sie ein Beispiel hier teilen: Ich möchte eine Zeichenfolge wie ersetzen: hi [var1] [var2] bis hi [newVar] [var2] . Und var1 werden in der Seite dynamisch generiert.

also musste ich verwenden: var regex = new RegExp ("\\ [" + var1 + "\\]", 'ig'); mystring.replace (regex, '[newVar]');

Das funktioniert ziemlich gut für mich. für den Fall, dass jemand so etwas wie mich braucht .. Der Grund, warum ich mit [] gehen muss, ist, dass var1 selbst ein sehr einfaches Muster sein kann, das Hinzufügen von [] wäre sehr genau.

1
liudaxingtx

Sie müssen RegExp konvertieren. Sie können tatsächlich eine einfache Funktion erstellen, die das für Sie erledigt:

function toReg(str) {
  if(!str || typeof str !== "string") {
    return;
  }
  return new RegExp(str, "i");
}

und nennen Sie es wie:

toReg("something")
0
Alireza

var Schlüsselwort = "etwas";

var test_regexp = new RegExp(something,"i");
0
Harshal Khatri