Welke regex-variant gebruikt dit?+−
De ingebouwde regex-engine van JavaScript (die achter RegExp en String.prototype.match/replace), omdat alles hier client-side in uw browser draait in plaats van op een server. Deze lijkt sterk op PCRE maar heeft enkele verschillen - lookbehind-ondersteuning hangt bijvoorbeeld af van de engineversie, en benoemde groepen gebruiken de syntax (?<naam>...).
Waarom matcht mijn patroon maar één keer?+−
Standaard stopt een regex zonder de g-vlag (globaal) na de eerste overeenkomst - dit weerspiegelt hoe RegExp.exec() en String.match() zich in JavaScript daadwerkelijk gedragen. Schakel hierboven de g-vlag in om elke overeenkomst in de testtekst te vinden in plaats van alleen de eerste.
Wat is het verschil tussen (...) en (?:...)?+−
Beide groeperen delen van een patroon, maar alleen (...) - een vastlegginggroep - slaat op wat er is gematcht, zodat u er later naar kunt verwijzen (als $1, $2, ... in een vervanging, of in de groepenlijst van de overeenkomst). (?:...) is een groep zonder vastlegging: deze groepeert en past kwantoren toe zonder de overeenkomst te bewaren, handig wanneer u groepering nodig heeft maar niet om de vastgelegde tekst geeft.
Hoe werken benoemde groepen en $<naam>-vervangingen?+−
Schrijf (?<naam>...) in plaats van (...) om een groep onder een naam vast te leggen in plaats van alleen een nummer. Verwijs er in de vervangingsmodus naar in de vervangingstekst als $<naam> - bijvoorbeeld, (?<jaar>\d{4})-(?<maand>\d{2}) vervangen door $<maand>/$<jaar> herschikt een datum zonder groepnummers te hoeven onthouden.
Wat is het verschil tussen een hebzuchtige (greedy) en een luie (lazy) kwantor, zoals + versus +??+−
Een hebzuchtige kwantor (+, *, {2,4}) komt overeen met zoveel mogelijk tekst en geeft alleen toe als dat nodig is om de rest van het patroon te laten matchen. Een luie kwantor - hetzelfde symbool gevolgd door ? - komt juist overeen met zo min mogelijk tekst en breidt zich alleen indien nodig één teken tegelijk uit. Bijvoorbeeld, <.+> tegenover <a><b> matcht hebzuchtig het hele <a><b>, terwijl <.+?> lui alleen <a> matcht.
Wat controleren lookahead en lookbehind eigenlijk als ze geen tekens verbruiken?+−
Ze controleren of een patroon direct vóór of na de huidige positie voorkomt, zonder het zelf in de match op te nemen - dus (?=...) en (?<=...) controleren vooruit/achteruit of iets aanwezig moet zijn, terwijl (?!...) en (?<!...) controleren dat het niet aanwezig mag zijn. Daarom kunt u \d+(?=px) gebruiken om een getal alleen te matchen als het wordt gevolgd door 'px', terwijl 'px' zelf nooit in de gematchte tekst verschijnt.