Du använder kvantifierare för att ange teckenrepetitioner eller sekvenser i mönster enligt följande:
Metatecken för kvantifierare
|
Beskrivning
|
*
(stjärna)
|
Matchar det föregående objektet repeterat noll gånger eller flera.
|
+
(plus)
|
Matchar det föregående objektet repeterat en eller flera gånger,
|
?
(frågetecken)
|
Matchar det föregående objektet repeterat noll eller en gång.
|
{
n
}
{
n
,}
och
{
n
,
n
}
|
Anger en numerisk kvantifierare eller ett kvantifieringsintervall för föregående objekt:
/A{27}/
matchar tecknet A repeterat 27 gånger.
/A{3,}/
matchar tecknet A repeterat 3 eller flera gånger.
/A{3,5}/
matchar tecknet A repeterat 3 till 5 gånger.
|
Du kan tillämpa en kvantifierare på ett enskilt tecken, på en teckenklass eller på en grupp.
-
/a+/
matchar tecknet
a
repeterat en eller flera gånger.
-
/\d+/
matchar en eller flera siffror.
-
/[abc]+/
matchar en repetition av en eller flera tecken, där tecknet är antingen
a
,
b
eller
c
.
-
/(very, )*/
matchar order
very
följt av ett komma och ett blanksteg repeterat noll eller flera gånger.
Du kan använda kvantifierare inom parentetiska grupper med kvantifierare. Följande kvantifierare matchar strängar som
word
och
word-word-word
:
/\w+(-\w+)*/
I reguljära uttryck utförs som standard något som kallas
girig matchning.
När du använder delmönster i det reguljära uttrycket (t.ex.
.*
) görs försök att matcha så många tecken i strängen som möjligt innan matchningen av nästa del av det reguljära uttrycket görs. Titta på följande reguljära uttryck och sträng:
var pattern:RegExp = /<p>.*<\/p>/;
str:String = "<p>Paragraph 1</p> <p>Paragraph 2</p>";
Det reguljära uttrycket matchar hela strängen:
<p>Paragraph 1</p> <p>Paragraph 2</p>
Anta att du bara vill matcha en
<p>...</p>
-gruppering. Du kan då göra följande:
<p>Paragraph 1</p>
Skriv ett frågetecken (
?
) efter en kvantifierare för ändra den till en s.k.
lat kvantifierare
. I följande reguljära uttryck används kvantifieraren
*?
för att matcha
<p>
följt av minsta möjliga antal tecken (”lat”), följt av
</p>
:
/<p>.*?<\/p>/
Tänk på följande när det gäller kvantifierare:
-
Kvantifierarna
{0}
och
{0,0}
utesluter inte ett objekt från matchningen.
-
Kombinera inte flera kvantifierare som
/abc+*/
.
-
Punkten (.). omfattar inte flera rader om inte flaggan
s
(
dotall
) anges. Detta gäller även om den följs av en
*
-kvantifierare. Titta på följande kod:
var str:String = "<p>Test\n";
str += "Multiline</p>";
var re:RegExp = /<p>.*<\/p>/;
trace(str.match(re)); // null;
re = /<p>.*<\/p>/s;
trace(str.match(re));
// output: <p>Test
// Multiline</p>
Mer information finns i
Flaggor och egenskaper
.