JavaScript Regex Cheat Sheet

Succesvol werken met reguliere expressies vereist dat u weet wat elk speciaal teken, vlag en methode doet. Dit is een cheat sheet met reguliere expressies waarnaar u kunt verwijzen wanneer u probeert te onthouden hoe een methode, een speciaal teken of een vlag werkt.

Een reguliere expressie in JavaScript definiëren

Er zijn twee manieren om een ​​reguliere expressie in JavaScript te definiëren.

  • var rgx = / ^ (\ d +) / - U kunt een reguliere expressie letterlijk gebruiken en het patroon tussen slashes insluiten. Dit wordt geëvalueerd tijdens het compileren en biedt betere prestaties als de reguliere expressie constant blijft.
  • var rgx = nieuwe RegExp ('^ (\ d +)') - De constructorfunctie is handig als de reguliere expressie programmatisch kan veranderen. Deze worden tijdens runtime gecompileerd.

Een specifieke reeks tekens matchen

De volgende reeksen kunnen worden gebruikt om een ​​specifieke set karakters te matchen.

  • \ w - Komt overeen met alle woorden tekens. Woordtekens zijn alfanumeriek (a-z, A-Z tekens en onderstrepingstekens).
  • \ w - Komt overeen met niet-woordtekens. Alles behalve alfanumerieke tekens en onderstrepingsteken.
  • \ d - Komt overeen met cijfers. Elk cijfer van 0 tot 9.
  • \ D - Komt overeen met tekens zonder cijfer. Alles behalve 0 tot 9.
  • \ s - Komt overeen met witruimtetekens. Dit omvat spaties, tabbladen en regeleinden.
  • \ S - Komt overeen met alle andere tekens behalve witruimte.
  • . - Komt overeen met elk teken behalve regeleinden.
  • [AZ] - Komt overeen met tekens in een bereik. Bijvoorbeeld, [A-E] komt overeen met A, B, C, D en E.
  • [ABC] - Komt overeen met een personage in de gegeven reeks. Bijvoorbeeld, [AMT] komt alleen overeen met A, M en T.
  • [^ ABC] - Komt overeen met alle tekens niet aanwezig in de gegeven set. Bijvoorbeeld, [^ A-E] komt overeen met alle andere tekens behalve A, B, C, D en E.

Het aantal overeenkomende tekens opgeven

Alle bovenstaande expressies komen overeen met één teken per keer. U kunt kwantoren toevoegen om op te geven hoeveel tekens tegelijk in de wedstrijd moeten worden opgenomen.

  • + - Komt overeen met een of meer exemplaren van het voorgaande token. Bijvoorbeeld, \ w+ zal terugkeren ABD12D als een enkele wedstrijd in plaats van zes verschillende wedstrijden.
  • * - Komt overeen met nul of meer voorkomens van het voorgaande token. Bijvoorbeeld, b \ w * komt overeen met de vetgedrukte delen in b, knuppel, bajhdsfbfjhbe. Kort gezegd komt het overeen met nul of meer woordtekens na 'b'.
  • m, n - Komt overeen met ten minste m en hoogstens n keer het vorige token. M komt overeen met minstens m voorkomens en er is geen bovengrens voor de overeenkomst. K zal overeenkomen met exact k occurrences van het voorgaande token.
  • ? - Komt overeen met nul of één occurrences van het voorgaande teken. Dit kan bijvoorbeeld handig zijn bij het matchen van twee spellingvarianten voor hetzelfde werk. Bijvoorbeeld, /gedrag/ zal beide matchen gedrag en gedrag.
  • | - Komt overeen met de expressie vóór of na het pipe-teken. Bijvoorbeeld, / SE (a | e) / komt overeen met zowel zee als zee.

Aan elkaar gerelateerde reguliere expressies

  • (ABC) - Dit groepeert meerdere tokens samen en onthoudt de substring die door hen is gematcht voor later gebruik. Dit wordt een capturing-groep genoemd.
  • (?:ABC) - Dit groepeert ook meerdere tokens samen maar onthoudt de match niet. Het is een niet-vastleggende groep.
  • \ D + (? = ABC) - Dit zal overeenkomen met de token (s) voorafgaand aan de (? = ABC) deel alleen als het wordt gevolgd door abc. Het onderdeel abc worden niet opgenomen in de wedstrijd. De \ d deel is slechts een voorbeeld. Het kan elke andere tekenreeks voor reguliere expressies zijn.
  • \ D + (?! ABC) - Dit zal overeenkomen met de token (s) voorafgaand aan de (?!ABC) alleen deel als het is niet gevolgd door abc. Het onderdeel abc worden niet opgenomen in de wedstrijd. De \ d deel is slechts een voorbeeld. Het kan elke andere tekenreeks voor reguliere expressies zijn.

Andere personages met reguliere expressie

Er zijn ook enkele andere tekens voor reguliere expressies die niet zijn behandeld in de vorige secties:

  • ^ - Zoek naar de reguliere expressie aan het begin van de tekenreeks of het begin van een regel als de vlag van meerdere regels is ingeschakeld.
  • $ - Zoek naar de reguliere expressie aan het einde van de tekenreeks of het einde van een regel als de vlag van meerdere regels is ingeschakeld.
  • \ b - Pas het voorafgaande token alleen aan als er een woordgrens is.
  • \ B - Pas het voorafgaande token alleen aan als er geen woordgrens is.

Vlaggen gebruiken met reguliere expressies

Vlaggen kunnen worden gebruikt om te bepalen hoe een reguliere expressie moet worden geïnterpreteerd. U kunt vlaggen alleen of samen gebruiken in elke gewenste volgorde. Dit zijn de vijf vlaggen die beschikbaar zijn in JavaScript. 

  • g - Zoek in de string naar alle overeenkomsten van gegeven uitdrukking in plaats van alleen de eerste terug te geven.
  • ik - Maak de zoekvraag ongevoelig, zodat woorden als Apple, APPE en Apple allemaal tegelijk kunnen worden vergeleken.
  • m - Deze vlag zorgt ervoor dat de ^ en $ tokens zoeken naar een overeenkomst aan het begin of einde van elke regel in plaats van de hele reeks.
  • u - Met deze vlag kunt u Unicode-codepunt-escapes gebruiken in uw reguliere expressie.
  • Y - Hierdoor weet JavaScript alleen te zoeken naar een overeenkomst op de huidige positie in de doelreeks.

U kunt vlaggen voor een reguliere expressie in JavaScript opgeven door ze letterlijk toe te voegen aan het einde van een reguliere expressie of door ze door te geven aan de RegExp constructeur. Bijvoorbeeld, / Cat / i komt overeen met alle exemplaren van kat ongeacht het geval, en RegExp ("cat", 'i') doet hetzelfde.

Handige reguliere expressiemethoden in JavaScript

De reguliere expressies die u maakt met behulp van de vlaggen en tekenreeksen die we tot nu toe hebben besproken, zijn bedoeld om te worden gebruikt met verschillende methoden voor het zoeken, vervangen of splitsen van een tekenreeks. Hier zijn enkele methoden met betrekking tot reguliere expressies.

  • test() - Controleer of de hoofdreeks een subtekenreeks bevat die overeenkomt met het patroon dat is opgegeven door de gegeven reguliere expressie. Het komt terug waar op succesvolle match en vals anders-.
var textA = 'Ik hou erg van APPles'; var textB = 'Ik hou van APPles'; var regexOne = / apples $ / i // Output: false console.log (regexOne.test (textA)); // Uitvoer: true console.log (regexOne.test (textB)); 

In het bovenstaande voorbeeld hoort de reguliere expressie naar het woord te zoeken appels alleen aan het einde van de string. Dat is waarom we hebben vals in het eerste geval.

  • zoeken() - Controleer of de hoofdreeks een subtekenreeks bevat die overeenkomt met het patroon dat is opgegeven door de gegeven reguliere expressie. Het geeft de index van de match terug over succes en -1 anders-.
var textA = 'Ik hou erg van APPles'; var regexOne = / apples /; var regexTwo = / apples / i; // Uitvoer: -1 console.log (textA.search (regexOne)); // Uitvoer: 7 console.log (textA.search (regexTwo));

In dit geval wordt de eerste reguliere expressie geretourneerd -1 omdat er geen exacte hoofdlettergevoelige overeenkomst was.

  • wedstrijd() - Zoek of de hoofdreeks een subtekenreeks bevat die overeenkomt met het patroon dat is opgegeven door de gegeven reguliere expressie. Als het g vlag is ingeschakeld, meerdere overeenkomsten worden geretourneerd als een array.
var textA = 'Alles wat ik hier zie zijn appels, appelen en appelen'; var regexOne = / apples / gi; // Output: ["apples", "APPles", "apPleS"] console.log (textA.match (regexOne));
  • exec () - Zoek of de hoofdreeks een subtekenreeks bevat die overeenkomt met het patroon dat is opgegeven door de gegeven reguliere expressie. De geretourneerde array bevat informatie over de overeenkomst en overnamegroepen.
var textA = 'Vind je appels leuk?'; var regexOne = / apples /; // Uitvoer: apples console.log (regexOne.exec (textA) [0]); // Output: hou je van appels? console.log (regexOne.exec (Texta) .input); 
  • vervangen() - Zoek naar een subtekenreeks die overeenkomt met het gegeven patroon en vervang deze door de gegeven vervangende tekenreeks.
var textA = 'Vind je APPles leuk?'; var regexOne = / apples / i // Output: hou je van mango's? console.log (textA.replace (regexOne, 'mango's'));
  • split () - Met deze methode kunt u de hoofdreeks splitsen in subtekenreeksen op basis van het scheidingsteken dat is opgegeven als een reguliere expressie.
var textA = 'Deze 593-string zal brok294en zijn op plaatsen waar dgits zijn.'; var regexOne = / \ d + / g // Uitvoer: ["Deze", "string is brok", "en op plaatsen waar d", "gits zijn." ] console.log (textA.split (regexOne))

Conclusie

In eerdere tutorials behandelde ik de basisprincipes van reguliere expressies en enkele meer gecompliceerde expressies die zo nu en dan nuttig kunnen blijken te zijn. Deze twee tutorials hebben uitgelegd hoe verschillende karakters of tekenreeksen werken in reguliere expressies.

  • Een beginnershandleiding voor reguliere expressies in JavaScript

    Met reguliere expressies kun je strings manipuleren met je code. Ze zijn erg krachtig, maar ze hebben een speciale syntaxis die verwarrend kan zijn. Deze tutorial ...
    Monty Shokeen
    Normale uitdrukkingen
  • JavaScript reguliere expressies: meer dan de basis

    In deze zelfstudie leer je hoe je geavanceerde reguliere expressies in JavaScript kunt gebruiken om patronen in een string te matchen. We beginnen met een snelle ...
    Monty Shokeen
    JavaScript

Als reguliere expressies je nog steeds in verwarring brengen, zou mijn advies zijn om te blijven oefenen en te zien hoe andere mensen met reguliere expressies komen om een ​​bepaald patroon te maken.