Also zum Beispiel:
function(input){
var testVar = input;
string = ...
string.replace(/ReGeX + testVar + ReGeX/, "replacement")
}
Aber das funktioniert natürlich nicht :) Gibt es eine Möglichkeit, dies zu tun?
javascript
regex
variables
Adam
quelle
quelle
Antworten:
Aktualisieren
Per einige der Kommentare, ist es wichtig zu beachten , dass Sie möchten entkommen die Variable , wenn es auf schädliche Inhalte (zB die Variable kommt von Benutzereingaben) Potential
ES6-Update
Im Jahr 2019 wird dies normalerweise mit einer Vorlagenzeichenfolge geschrieben, und der obige Code wurde aktualisiert. Die ursprüngliche Antwort war:
quelle
regex
Ausdruck/\w+\//i
wirdnew RegExp("\\w+/", "i")
Sie können das RegExp-Objekt verwenden:
Dann können Sie konstruieren
regexstring
.Sie können mehr darüber lesen Sie hier .
quelle
Um einen regulären Ausdruck aus einer Variablen in JavaScript zu erstellen, müssen Sie den
RegExp
Konstruktor mit einem Zeichenfolgenparameter verwenden.Dies ist natürlich ein sehr naives Beispiel. Es wird davon ausgegangen, dass
input
es für einen regulären Ausdruck ordnungsgemäß maskiert wurde. Wenn Sie sich mit Benutzereingaben befassen oder einfach das Abgleichen von Sonderzeichen vereinfachen möchten, müssen Sie Sonderzeichen umgehen :quelle
ReGeX
Text gelöscht habe . Also habe ich verwendet:return new RegExp(input, flags);
\\
stellt ein einzelnes\
Zeichen dar,$&
ist der übereinstimmende Teilstring .wenn Sie es6 verwenden Vorlagenliterale verwenden, sind diese eine Option ...
quelle
^[^\s]{${4},${32}}$
); export const validatePassword = value => value.match (newRegExp); `` `Sie können einen regulären Ausdruck immer als Zeichenfolge angeben, d. H.
"ReGeX" + testVar + "ReGeX"
.Möglicherweise müssen Sie einige Zeichen in Ihrer Zeichenfolge maskieren (z. B. doppelte Anführungszeichen), aber in den meisten Fällen ist dies gleichwertig.Sie können den
RegExp
Konstruktor auch zum Übergeben von Flags verwenden ( siehe Dokumentation ).quelle
Sie können reguläre Ausdrücke in JS auf zwei Arten erstellen:
/ab{2}/g
new RegExp("ab{2}", "g")
.Literale für reguläre Ausdrücke sind konstant und können nicht mit Variablen verwendet werden. Dies könnte mit dem Konstruktor erreicht werden. Die Struktur des RegEx-Konstruktors ist
Sie können Variablen als Teil des regulären Ausdrucks einbetten. Beispielsweise,
Dies passt zu jedem Erscheinungsbild des Musters
cdcdcd
.quelle
Hier ist eine ziemlich nutzlose Funktion, die Werte zurückgibt, die von bestimmten Zeichen umbrochen werden. :) :)
jsfiddle: https://jsfiddle.net/squadjot/43agwo6x/
quelle
akzeptierte Antwort funktioniert bei mir nicht und folgt nicht MDN-Beispielen
Siehe den Abschnitt 'Beschreibung' im obigen Link
Ich würde mit folgendem gehen, es funktioniert für mich:
quelle
Es ist nur erforderlich, zuerst die Zeichenfolgenvariable vorzubereiten und sie dann in RegEx zu konvertieren.
beispielsweise:
Sie hinzufügen möchten
minLength
undMaxLength
mit den Variablen zu RegEx:jetzt, wenn Sie den Wert von
MaxLength
oder ändernMinLength
ändern, ändert sich dies in allen RegExs.Ich hoffe, nützlich zu sein. Tut mir auch leid wegen meinem Englisch.
quelle