JavaScripts Unterstützung für reguläre Ausdrücke gilt weithin als eine der besten der Welt, hat aber einen Nachteil: Es gibt keine integrierte Möglichkeit, einen regulären Ausdruck zu klonen. Dies kann zu einem Problem werden, wenn Sie einen neuen regulären Ausdruck erstellen müssen, der einem vorhandenen regulären Ausdruck ähnelt, jedoch einige geringfügige Änderungen aufweist.
Das Problem besteht darin, dass reguläre Ausdrücke Objekte sind und daher nicht kopiert werden können, indem einfach ein Objekt einem anderen zugewiesen wird. Betrachten Sie den folgenden Code -
var regex1 = /foo/; var regex2 = regex1; regex2 === regex1; // true
In diesem Code erstellen wir zwei identische reguläre Ausdrücke. Aber was ist, wenn wir an einem von ihnen eine kleine Änderung vornehmen möchten?
regex2 = /bar/; regex1 === regex2; // false
Nun sind diese beiden regulären Ausdrücke unterschiedlich, obwohl sie ursprünglich als Kopien voneinander entstanden sind. Dies liegt daran, dass reguläre Ausdrücke veränderbar sind: Sie können nach ihrer Erstellung geändert werden.
Eine Möglichkeit, einen regulären Ausdruck zu klonen, besteht darin, ein neues reguläres Ausdrucksliteral zu erstellen, das einem vorhandenen regulären Ausdrucksliteral ähnelt. Wenn wir zum Beispiel einen regulären Ausdruck wie diesen haben -
var regex1 = /foo/;
Wir können einen neuen regulären Ausdruck erstellen, der mit einem regulären Ausdrucksliteral identisch ist -
var regex2 = /foo/; regex1 === regex2; // true
Diese Methode ist einfach und unkompliziert, funktioniert aber nur, wenn der reguläre Ausdruck ein Literal ist (d. h. nicht mit dem neuen Konstruktor RegExp() erstellt wurde).
Eine andere Möglichkeit, einen regulären Ausdruck zu klonen, ist die Verwendung des Konstruktors RegExp(). Dadurch können wir einen neuen regulären Ausdruck basierend auf einem vorhandenen regulären Ausdruck erstellen, jedoch mit einigen Änderungen. Wenn wir zum Beispiel einen regulären Ausdruck wie diesen haben -
var regex1 = /foo/;
Mit dem Konstruktor RegExp() können wir einen neuen regulären Ausdruck erstellen, der damit identisch ist
var regex2 = new RegExp(regex1); regex1 === regex2; // true
Warum klonen wir reguläre Ausdrücke?
Nachteile des Klonens regulärer Ausdrücke
var regex1 = /foo/;
var regex2 = new RegExp(regex1, 'i');
var regex2 = /foo/i;
Das obige ist der detaillierte Inhalt vonWie klone ich einen bestimmten regulären Ausdruck in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!