Verwendung einer Variablen in eine AS3, Regexp
Verwenden von Actionscript 3.0 (Flash CS5)
Einem standard-regex-match any Ziffer:
var myRegexPattern:Regex = /\d/g;
Was wäre die regex Aussehen auch eine string-variable anzupassen?
(dieses Beispiel ist ein 'IDEAL' nicht 'ARBEITEN' snippet) ie:
var myString:String = "MatchThisText"
var myRegexPatter_WithString:Regex = /\d[myString]/g;
Ich habe gesehen, einige Problemumgehungen, die sich um die Erstellung mehrere regex-Instanzen, dann kombinieren Sie nach Quelle, mit der Variablen in Frage, die falsch ist. ODER mit dem flash-string-regex-Ersteller, aber es ist einfach nur schlampig mit all den Doppel-und dreifach-escape-Sequenzen benötigt.
Muss es sein, ein Schmerz-frei Weg, dass ich nicht finden können in der live-docs oder google. Tut AS3 halten diese Funktion auch? Wenn nicht, sollte es wirklich.
Oder bin ich fehlt einen viel einfacheren Mittel einfach Sie zu vermeiden diese Aufgabe, ich bin einfach zu naiv, auch aufgrund meiner Neuheit zu regex?
- Ich nehme an
new RegExp("\\d" + myString, "g")
ist, was Sie vermeiden wollen? Ich glaube nicht, dass es einen anderen Weg, aber mich würde interessieren, ob es waren. - In Perl könnte man es machen, mit
/\d$myString/g
, aber das ist Perl. 😉 - Ich war gerade dabei zu schreiben, dass Sie als Antwort.
- Sorry 'bout that. Ich fühle mich immer wie eine Online Antwort ist nicht gut genug. Eh @Tyler hatte eine bessere.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe sogar darüber gebloggt, also werde ich nur zeigen Sie es: http://tyleregeto.com/using-vars-in-regular-expressions-as3 Er spricht über die möglichen Lösungen, aber es gibt keine ideale, wie Sie erwähnen.
BEARBEITEN
Hier ist eine Kopie der wichtigsten Teile, der blog-Eintrag:
Hier ist ein regex-strip-tags aus einem text.
Dieser nette Ausdruck funktioniert wie ein Charme. Aber ich wollte es zu aktualisieren, so könnte der Entwickler einzuschränken, die tags, die er abgestreift, um die Einstellungen in einem array. Ziemlich straight-forward Zeug, um einen Variablen Wert in eine regex, müssen Sie zuerst, um es zu bauen als ein string und dann konvertieren. So etwas wie die folgenden:
Ziemlich straight-forward. Also bei der Annäherung an dieses kleine upgrade, das ist, was ich getan habe. Natürlich ein großes problem, war ziemlich klar.
Erraten, was, ungültige Zeichenfolge! Besser entkommen die Anführungszeichen in der Zeichenfolge. Hoppla, das wird brechen die regex! Ich war ratlos. Also öffnete ich die Sprache, Referenz, um zu sehen, was ich finden konnte. Die "source" - parameter, (die ich noch nie benutzt haben) fing mein Auge. Es gibt eine Zeichenfolge zurück, beschrieben als "das Muster des regulären Ausdrucks an." Es hat den trick perfekt. Hier ist die Lösung:
Senken Sie es nach unten, um diese für die Bequemlichkeit:
source
Eigenschaft auch. Aber Ihre Beispiele sind ein bisschen verwirrend. Ich bin mir nicht sicher, ob ich dir Folgen, wenn du schreibstend.source
während ich sehe, dass Ihrstart
sieht dem sehr ähnlich, was das Ende sein sollte. Ich bin auch nicht so stark auf RegEx so vielleicht eine kleine Klarstellung, es würde helfen. Guter Beitrag!Als Tyler richtig darauf hin (und seine Antwort, funktioniert Prima), Sie montieren Ihre regex als string-Ende übergeben Sie die Zeichenfolge
RegExp
Konstruktor mit dernew RegExp("pattern", "flags")
syntax.Beachten Sie, dass wenn Sie eine Zeichenfolge zu speichern, die regex-Muster, die Sie tun müssen, fügen Sie einige zusätzliche umgekehrte Schrägstriche, um es richtig zu arbeiten (z.B. um eine
\d
im regex, müssen Sie\\d
im string). Beachten Sie auch, dass die Zeichenfolge Muster nicht verwenden Sie den Schrägstrich Trennzeichen. In anderen Worten, die folgenden beiden Aussagen sind gleichwertig:Zusätzlicher Hinweis: eventuell müssen Sie den Prozess der
myString
variable zu entkommen alle backslashes, die es enthalten kann (wenn Sie sind zu sein interpretiert als literal). Wenn dies der Fall ist, die Funktion wird:new RegExp()
). Aber wie ich schon oben gezeigt, die keine große Sache - nur eine einzige Anweisung. Also ich denke, die echte in Antwort auf Ihre Frage ist NEIN. (Und BTW dieRegExp
Konstruktor ist eine core-JavaScript-Funktion, und nicht AS3/Flash-spezifischen.)