Ich habe mehrere ähnliche Fragen gefunden, aber es hat mir nicht geholfen. Ich habe also dieses Problem:
var xxx = "victoria";
var yyy = "i";
alert(xxx.match(yyy/g).length);
Ich weiß nicht, wie ich eine Variable im Match-Befehl übergeben soll. Bitte helfen Sie. Danke dir.
javascript
variables
match
Mesnicka
quelle
quelle
SyntaxError: Invalid regular expression: /c++/: Nothing to repeat
Antworten:
Obwohl die Übereinstimmungsfunktion keine String-Literale als Regex-Muster akzeptiert, können Sie den Konstruktor des RegExp-Objekts verwenden und diesen an die String.match-Funktion übergeben:
Alle benötigten Flags (z. B. / g) können in den zweiten Parameter eingegeben werden.
quelle
match
Methode übergebene Argument keinRegExp
Objekt ist, wird derRegExp
Konstruktor intern mit diesem Wert aufgerufen, sodass Sie ein Zeichenfolgenmuster verwenden können , z. B.:"a123".match("\\d+")[0] === "123";
Sie müssen das RegExp-Objekt verwenden, wenn Ihr Muster eine Zeichenfolge ist
Wenn das Muster keine dynamische Zeichenfolge ist:
quelle
Beispielsweise:
Oder
quelle
Beispiel. Anzahl der Vokale in der Zeichenfolge ermitteln
quelle
Für mich ist es sowieso hilfreich zu sehen, wie es benutzt wird. habe dies gerade anhand des Beispiels "re" gemacht:
quelle
quelle
String.prototype.match
Methode nur ein Argument erwartet . Die Verwendung desRegExp
Konstruktors ist, wie @Chris vorschlägt, der bevorzugte Weg.