Flags und Eigenschaften

Flash Player 9 und höher, Adobe AIR 1.0 und höher

In der folgenden Tabelle sind die fünf Flags aufgeführt, die für reguläre Ausdrücke gesetzt werden können. Jedes Flag kann als Eigenschaft des regulären Ausdrucks abgerufen werden.

Flag

Eigenschaft

Beschreibung

g

global

Entspricht mehreren Übereinstimmungen.

i

ignoreCase

Bei der Suche nach Übereinstimmungen wird die Groß- und Kleinschreibung nicht beachtet. Wird für die Zeichen A - Z und a - z , jedoch nicht für Sonderzeichen wie Ä und ä angewendet.

m

multiline

Wenn dieses Flag gesetzt ist, entsprechen $ und ^ jeweils dem Anfang einer Zeile bzw. dem Ende einer Zeile.

s

dotall

Wenn dieses Flag gesetzt ist, werden mit . (Punkt) auch Zeilenvorschubzeichen ( \n ) gefunden.

x

extended

Ermöglicht erweiterte reguläre Ausdrücke. Sie können in einem regulären Ausdruck Leerzeichen eingeben, die nicht als Bestandteil des Musters aufgefasst werden. Dadurch kann der Code für den regulären Ausdruck besser lesbar eingegeben werden.

Beachten Sie, dass diese Eigenschaften schreibgeschützt sind. Sie können die Flags ( g , i , m , s und x ) wie folgt beim Definieren einer Variablen für einen regulären Ausdruck setzen:

var re:RegExp = /abc/gimsx;

Die benannten Eigenschaften können jedoch nicht direkt gesetzt werden. Der folgende Code führt beispielsweise zu einer Fehlermeldung:

var re:RegExp = /abc/; 
re.global = true; // This generates an error.

In der Standardeinstellung sind die Flags nicht gesetzt, es sei denn, Sie geben sie in der Deklaration für einen regulären Ausdruck an. Die entsprechenden Eigenschaften sind ebenfalls auf false gesetzt.

Es sind darüber hinaus zwei weitere Eigenschaften für reguläre Ausdrücke verfügbar:

  • Mit der lastIndex -Eigenschaft wird die Indexposition im String angegeben, die für den nächsten Aufruf der Methoden exec() oder test() eines regulären Ausdrucks verwendet wird.

  • Mit der source -Eigenschaft wird der String angegeben, der das Muster in einem regulären Ausdruck definiert.

g-Flag (global)

Wenn das g -Flag ( global ) nicht gesetzt ist, wird je regulärem Ausdruck nur eine Übereinstimmung gefunden. Wenn das g -Flag im regulären Ausdruck nicht gesetzt ist, gibt die String.match() -Methode beispielsweise nur einen übereinstimmenden Teilstring zurück:

var str:String = "she sells seashells by the seashore."; 
var pattern:RegExp = /sh\w*/; 
trace(str.match(pattern)) // output: she

Wenn das g -Flag gesetzt ist, gibt die String.match() -Methode wie folgt mehrere Übereinstimmungen zurück:

var str:String = "she sells seashells by the seashore."; 
var pattern:RegExp = /sh\w*/g; 
// The same pattern, but this time the g flag IS set. 
trace(str.match(pattern)); // output: she,shells,shore

i-Flag (ignoreCase)

In der Standardeinstellung wird bei Übereinstimmungen regulärer Ausdrücke die Groß- und Kleinschreibung beachtet. Wenn Sie das i -Flag ( ignoreCase ) setzen, wird die Groß- und Kleinschreibung ignoriert. Das kleingeschriebene s im regulären Ausdruck entspricht beispielsweise nicht dem ersten Zeichen des Strings, dem großgeschriebenen Buchstaben S :

var str:String = "She sells seashells by the seashore."; 
trace(str.search(/sh/)); // output: 13 -- Not the first character

Wenn das i -Flag jedoch gesetzt ist, stimmt der Großbuchstabe S mit dem regulären Ausdruck überein:

var str:String = "She sells seashells by the seashore."; 
trace(str.search(/sh/i)); // output: 0

Mit dem i -Flag wird die Groß- und Kleinschreibung nur bei den Zeichen A - Z und a - z , jedoch nicht bei Sonderzeichen wie Ä und ä ignoriert.

m-Flag (multiline)

Wenn das m -Flag ( multiline ) nicht gesetzt ist, entspricht ^ dem Anfang eines Strings und $ dem Ende eines Strings. Wenn das m -Flag gesetzt ist, entsprechen diese Zeichen jeweils dem Anfang bzw. dem Ende einer Zeile im String. Betrachten Sie den folgenden String, der ein Zeilenvorschubzeichen enthält:

var str:String = "Test\n"; 
str += "Multiline"; 
trace(str.match(/^\w*/g)); // Match a word at the beginning of the string.

Obwohl das g -Flag ( global ) im regulären Ausdruck gesetzt ist, gibt die match() -Methode nur einen übereinstimmenden Teilstring zurück, da nur eine Entsprechung für das ^ -Zeichen vorliegt, nämlich am Anfang des Strings. Folgendes wird ausgegeben:

Test

Es folgt der gleiche Code mit dem gesetzten m -Flag:

var str:String = "Test\n"; 
str += "Multiline"; 
trace(str.match(/^\w*/gm)); // Match a word at the beginning of lines. 

Nun werden die Wörter am Anfang der beiden Zeilen ausgegeben:

Test,Multiline

Beachten Sie, dass nur das Zeichen \n das Ende einer Zeile angibt. Das Ende einer Zeile wird jedoch nicht durch folgende Zeichen angegeben:

  • Wagenrücklaufzeichen ( \r )

  • Unicode-Zeilentrennzeichen ( \u2028 )

  • Unicode-Absatztrennzeichen ( \u2029 )

s-Flag (dotall)

Wenn das s -Flag ( dotall oder „dot all“) nicht gesetzt ist, entspricht ein Punkt ( . ) in einem regulären Ausdruck nicht dem Zeilenvorschubzeichen ( \n ). Daher wird im folgenden Beispiel keine Entsprechung zurückgegeben:

var str:String = "<p>Test\n"; 
str += "Multiline</p>"; 
var re:RegExp = /<p>.*?<\/p>/; 
trace(str.match(re)); 

Wenn das s -Flag jedoch gesetzt ist, wird mit dem Punkt auch eine Übereinstimmung mit dem Zeilenvorschubzeichen erkannt:

var str:String = "<p>Test\n"; 
str += "Multiline</p>"; 
var re:RegExp = /<p>.*?<\/p>/s; 
trace(str.match(re)); 

In diesem Fall stimmt der gesamte Teilstring innerhalb der <p> -Tags mit dem regulären Ausdruck überein, einschließlich des Zeilenvorschubzeichens:

<p>Test 
Multiline</p>

x-Flag (extended)

Reguläre Ausdrücke sind unter Umständen schwer lesbar, vor allem, wenn sie viele Metasymbole und Metasequenzen enthalten. Zum Beispiel:

/<p(>|(\s*[^>]*>)).*?<\/p>/gi

Wenn Sie das x -Flag ( extended ) in einem regulären Ausdruck verwenden, werden alle im Muster eingefügten Leerzeichen ignoriert. Der folgende reguläre Ausdruck ist beispielsweise mit dem vorherigen Beispiel identisch:

/     <p    (>  | (\s* [^>]* >))    .*?    <\/p>  /gix

Wenn das x -Flag gesetzt ist und Sie angeben möchten, dass ein bestimmtes Leerzeichen nicht ignoriert werden soll, fügen Sie vor dem Leerzeichen einen umgekehrten Schrägstrich ein. Die beiden folgenden regulären Ausdrücke sind beispielsweise gleichwertig:

/foo bar/ 
/foo \ bar/x

lastIndex-Eigenschaft

Die lastIndex -Eigenschaft gibt die Indexposition im String an, ab der die nächste Suche beginnen soll. Diese Eigenschaft hat Auswirkungen auf die Methoden exec() und test() , die für einen regulären Ausdruck aufgerufen werden, bei dem das g -Flag auf true gesetzt ist. Betrachten Sie den folgenden Beispielcode:

var pattern:RegExp = /p\w*/gi; 
var str:String = "Pedro Piper picked a peck of pickled peppers."; 
trace(pattern.lastIndex); 
var result:Object = pattern.exec(str); 
while (result != null) 
{ 
    trace(pattern.lastIndex); 
    result = pattern.exec(str); 
}

Die lastIndex -Eigenschaft ist in der Standardeinstellung auf 0 gesetzt (damit Suchvorgänge am Anfang eines Strings gestartet werden). Nach jeder Übereinstimmung wird die Eigenschaft auf die Indexposition nach der Übereinstimmung gesetzt. Dies ergibt die folgende Ausgabe für das vorherige Codebeispiel:

0 
5 
11 
18 
25 
36 
44

Wenn das global -Flag auf false gesetzt ist, verwenden oder setzen die Methoden exec() und test() die lastIndex -Eigenschaft nicht.

Die Methoden match() , replace() und search() der String-Klasse starten alle Suchvorgänge am Anfang eines Strings, unabhängig von der Einstellung der lastIndex -Eigenschaft des regulären Ausdrucks, der zum Aufrufen der entsprechenden Methode verwendet wird. (Mit der match() -Methode wird die lastIndex -Eigenschaft jedoch auf 0 gesetzt.)

Sie können die Eigenschaft lastIndex setzen, um die Anfangsposition in dem String zu setzen, in dem nach einem regulären Ausdruck gesucht werden soll.

source-Eigenschaft

Mit der source -Eigenschaft wird der String angegeben, der das Muster in einem regulären Ausdruck definiert. Zum Beispiel:

var pattern:RegExp = /foo/gi; 
trace(pattern.source); // foo