Heim  >  Artikel  >  Web-Frontend  >  Wie klone ich einen bestimmten regulären Ausdruck in JavaScript?

Wie klone ich einen bestimmten regulären Ausdruck in JavaScript?

WBOY
WBOYnach vorne
2023-09-17 17:25:021033Durchsuche

如何在 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.

Klonen mit regulären Ausdrücken

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).

Verwenden Sie den RegExp()-Konstruktor, um einen regulären Ausdruck zu klonen

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

Diese 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?

Das Klonen regulärer Ausdrücke hat einige Vorteile. Erstens sparen Sie Zeit, wenn Sie viele ähnliche reguläre Ausdrücke erstellen müssen. Zweitens hilft es Ihnen, Fehler zu vermeiden, wenn Sie geringfügige Änderungen an einem vorhandenen regulären Ausdruck vornehmen müssen. Schließlich können Sie Ihren Code besser lesbar machen, indem Sie dem regulären Ausdruck einen beschreibenden Namen geben.

Nachteile des Klonens regulärer Ausdrücke

Ein Nachteil des Klonens eines regulären Ausdrucks besteht darin, dass der Code dadurch komplexer wird. Wenn Sie beispielsweise einen regulären Ausdruck wie diesen haben -

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen