Heim > Artikel > Web-Frontend > Wie klone ich einen bestimmten regulären Ausdruck in JavaScript?
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; // trueDiese Methode ist etwas komplexer als die vorherige, hat aber den Vorteil, dass sie nicht-literale reguläre Ausdrücke klonen kann.
Warum klonen wir reguläre Ausdrücke?
Nachteile des Klonens regulärer Ausdrücke
var regex1 = /foo/;Und Sie möchten einen neuen regulären Ausdruck erstellen, der diesem ähnelt, aber mit dem Flag, bei dem die Groß-/Kleinschreibung nicht berücksichtigt wird, Sie müssen dies tun -
var regex2 = new RegExp(regex1, 'i');Dies ist komplexer, als einfach einen neuen regulären Ausdruck mit dem Flag „Groß-/Kleinschreibung zu berücksichtigen“ zu erstellen -
var regex2 = /foo/i;Zusammenfassend lässt sich sagen, dass das Klonen von Regex ein nützliches Werkzeug sein kann, aber es bringt einige Kompromisse mit sich. Dadurch kann Ihr Code komplexer werden, Sie können aber auch Zeit sparen und Fehler vermeiden.
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!