Gebruik kwantoren om herhalingen van tekens of reeksen in patronen als volgt aan te geven:
Metateken voor kwantor
|
Beschrijving
|
*
(ster)
|
Komt overeen met het vorige item dat nul keer of vaker is herhaald.
|
+
(plus)
|
Komt overeen met het vorige item dat een keer of vaker is herhaald.
|
?
(vraagteken)
|
Komt overeen met het vorige item dat nul of een keer is herhaald.
|
{
n
}
{
znw
,}
and
{
n
,
n
}
|
Geeft een numerieke kwantor of een numeriek kwantorbereik voor het vorige item aan:
/A{27}/
komt overeen met het teken A dat 27 keer wordt herhaald.
/A{3,}/
komt overeen met het teken A 3 of meer keer wordt herhaald.
/A{3,5}/
komt overeen met het teken A dat 3 tot 5 keer wordt herhaald.
|
U kunt een kwantor toevoegen aan een afzonderlijk teken, aan een tekenklasse of aan een groep:
-
/a+/
komt overeen met het teken
a
dat een of meer keer wordt herhaald.
-
/\d+/
komt overeen met een of meer cijfers.
-
/[abc]+/
komt overeen met een herhaling van een of meer tekens, waarvan elk ofwel
a
,
b
of
c
is.
-
/(very, )*/
komt overeen met het woord
very
, gevolgd door een komma en een spatie, dat nul keer of vaker wordt herhaald.
U kunt kwantoren binnen overeenkomende groepen tussen haakjes gebruiken waaraan kwantoren zijn toegevoegd. De volgende kwantor komt bijvoorbeeld overeen met tekenreeksen zoals
word
en
word-word-word
:
/\w+(-\w+)*/
Reguliere expressies zorgen voor wat
greedy matching wordt genoemd.
Elk subpatroon binnen de reguliere expressie (zoals
.*
) probeert met zoveel mogelijk tekens in de tekenreeks overeen te komen voordat naar het volgende gedeelte van de reguliere expressie wordt gegaan. Kijk bijvoorbeeld naar de volgende reguliere expressie en tekenreeks:
var pattern:RegExp = /<p>.*<\/p>/;
str:String = "<p>Paragraph 1</p> <p>Paragraph 2</p>";
De reguliere expressie komt overeen met de volledige tekenreeks:
<p>Paragraph 1</p> <p>Paragraph 2</p>
Stel echter dat er slechts één serie
<p>...</p>
moet overeenkomen. Dit kunt u doen op de volgende manier:
<p>Paragraph 1</p>
Voeg een vraagteken toe (
?
) na een willekeurige kwantor, om deze te wijzigen in een zogenaamde
lazy kwantor
. De volgende reguliere expressie bijvoorbeeld, die gebruikmaakt van de lazy kwantor
*?
, komt overeen met
<p>
gevolgd door het minimaal mogelijke aantal tekens (lazy), gevolgd door
</p>
:
/<p>.*?<\/p>/
Houd bij kwantoren rekening met de volgende punten:
-
De kwantoren
{0}
en
{0,0}
sluiten geen item uit als er een overeenkomst is.
-
Maak geen combinaties van meerdere kwantoren, zoals in
/abc+*/
.
-
De punt (.) zorgt niet voor een bereik van regels, tenzij de markering
s
(
dotall
) is ingesteld, zelfs als deze wordt gevolgd door een kwantor
*
. Neem bijvoorbeeld de volgende code:
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>
Zie
Markeringen en eigenschappen
voor meer informatie.