Regular Expressions 101

Save & Share

Flavor

  • PCRE2 (PHP >=7.3)
  • PCRE (PHP <7.3)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java 8
  • .NET 7.0 (C#)
  • Rust
  • Regex Flavor Guide

Function

  • Match
  • Substitution
  • List
  • Unit Tests

Tools

Sponsors
There are currently no sponsors. Become a sponsor today!
An explanation of your regex will be automatically generated as you type.
Detailed match information will be displayed here automatically.
  • All Tokens
  • Common Tokens
  • General Tokens
  • Anchors
  • Meta Sequences
  • Quantifiers
  • Group Constructs
  • Character Classes
  • Flags/Modifiers
  • Substitution
  • A single character of: a, b or c
    [abc]
  • A character except: a, b or c
    [^abc]
  • A character in the range: a-z
    [a-z]
  • A character not in the range: a-z
    [^a-z]
  • A character in the range: a-z or A-Z
    [a-zA-Z]
  • Any single character
    .
  • Alternate - match either a or b
    a|b
  • Any whitespace character
    \s
  • Any non-whitespace character
    \S
  • Any digit
    \d
  • Any non-digit
    \D
  • Any word character
    \w
  • Any non-word character
    \W
  • Non-capturing group
    (?:...)
  • Capturing group
    (...)
  • Zero or one of a
    a?
  • Zero or more of a
    a*
  • One or more of a
    a+
  • Exactly 3 of a
    a{3}
  • 3 or more of a
    a{3,}
  • Between 3 and 6 of a
    a{3,6}
  • Start of string
    ^
  • End of string
    $
  • A word boundary
    \b
  • Non-word boundary
    \B

Regular Expression

/
/
gm

Test String

Code Generator

Generated Code

const regex = /(?P<Element><(?P<TagName>[:_A-z][-.0-9:_A-z\xB7]*)(?:[\x09\x0A\x0D\x20]+[:_A-z][-.0-9:_A-z\xB7]*[\x09\x0A\x0D\x20]*=[\x09\x0A\x0D\x20]*(?:"(?:[^<&"]|&(?:[:_A-z][-.0-9:_A-z\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));)*"|'(?:[^<&']|&(?:[:_A-z][-.0-9:_A-z\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));)*'))*[\x09\x0A\x0D\x20]*(?:>(?:(?:[^<&\]]|](?!]>))*(?:(?:(?P>Element)|&(?:[:_A-z][-.0-9:_A-z\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));|<!\[CDATA\[(?:[^\x01-\x08\x0B\x0C\x0E-\x1F\x5D]|](?!]>))*]]>|<\?[:_A-z][-.0-9:_A-z\xB7]*(?<!(?i:\?xml))(?:[\x09\x0A\x0D\x20]+(?:[^\x01-\x08\x0B\x0C\x0E-\x1F\x3F]|\?(?!>))*)?\?>|<!--(?:[^\x01-\x08\x0B\x0C\x0E-\x1F\x2D]|-(?!-))*-->)(?:[^<&\]]|](?!]>))*)*)<\/(?P=TagName)[\x09\x0A\x0D\x20]*|\/)>)|&(?:[:_A-z][-.0-9:_A-z\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));|<!\[CDATA\[(?:[^\x01-\x08\x0B\x0C\x0E-\x1F\x5D]|](?!]>))*]]>|<\?[:_A-z][-.0-9:_A-z\xB7]*(?<!(?i:\?xml))(?:[\x09\x0A\x0D\x20]+(?:[^\x01-\x08\x0B\x0C\x0E-\x1F\x3F]|\?(?!>))*)?\?>|<!--(?:[^\x01-\x08\x0B\x0C\x0E-\x1F\x2D]|-(?!-))*-->|<!DOCTYPE[\x09\x0A\x0D\x20]+[:_A-z][-.0-9:_A-z\xB7]*(?:[\x09\x0A\x0D\x20]+(?:SYSTEM[\x09\x0A\x0D\x20]+(?:"[^"]*"|'[^']*')|PUBLIC[\x09\x0A\x0D\x20]+(?:"[\x0A\x0D\x20\x21\x23-\x25\x27-\x2F\x3A\x3B\x3D\x3F\x40_0-9A-z]*"|'[\x0A\x0D\x20\x21\x23-\x25\x28-\x2F\x3A\x3B\x3D\x3F\x40_0-9A-z]*')[\x09\x0A\x0D\x20]+(?:"[^"]*"|'[^']*')))?[\x09\x0A\x0D\x20]*(?:\[(?:(?:<!ELEMENT[\x09\x0A\x0D\x20]+[:_A-z][-.0-9:_A-z\xB7]*[\x09\x0A\x0D\x20]+(?:EMPTY|ANY|\([\x09\x0A\x0D\x20]*#PCDATA(?:(?:[\x09\x0A\x0D\x20]*\|[\x09\x0A\x0D\x20]*[:_A-z][-.0-9:_A-z\xB7]*)*[\x09\x0A\x0D\x20]*\)\*|[\x09\x0A\x0D\x20]*\))|(?:(?P<choice>\([\x09\x0A\x0D\x20]*(?:[:_A-z][-.0-9:_A-z\xB7]*|(?P>choice)|(?P>seq))[?*+]?(?:[\x09\x0A\x0D\x20]*\|[\x09\x0A\x0D\x20]*(?:[:_A-z][-.0-9:_A-z\xB7]*|(?P>choice)|(?P>seq))[?*+]?)+[\x09\x0A\x0D\x20]*\))|(?P<seq>\([\x09\x0A\x0D\x20]*(?:[:_A-z][-.0-9:_A-z\xB7]*|(?P>choice)|(?P>seq))[?*+]?(?:[\x09\x0A\x0D\x20]*,[\x09\x0A\x0D\x20]*(?:[:_A-z][-.0-9:_A-z\xB7]*|(?P>choice)|(?P>seq))[?*+]?)*[\x09\x0A\x0D\x20]*\)))[?*+]?)[\x09\x0A\x0D\x20]*>|<!ATTLIST[\x09\x0A\x0D\x20]+[:_A-z][-.0-9:_A-z\xB7]*(?:[\x09\x0A\x0D\x20]+[:_A-z][-.0-9:_A-z\xB7]*[\x09\x0A\x0D\x20]+(?:CDATA|(?:ID(?:REFS?)?|ENTIT(?:Y|IES)|NMTOKENS?)|(?:NOTATION[\x09\x0A\x0D\x20]+\([\x09\x0A\x0D\x20]*[:_A-z][-.0-9:_A-z\xB7]*(?:[\x09\x0A\x0D\x20]*\|[\x09\x0A\x0D\x20]*[:_A-z][-.0-9:_A-z\xB7]*)*[\x09\x0A\x0D\x20]*\)|\([\x09\x0A\x0D\x20]*(?:[-.0-9:_A-z\xB7])+(?:[\x09\x0A\x0D\x20]*\|[\x09\x0A\x0D\x20]*(?:[-.0-9:_A-z\xB7])+)*[\x09\x0A\x0D\x20]*\)))[\x09\x0A\x0D\x20]+(?:#(?:REQUIRED|IMPLIED)|(?:#FIXED[\x09\x0A\x0D\x20]+)?(?:"(?:[^<&"]|&(?:[:_A-z][-.0-9:_A-z\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));)*"|'(?:[^<&']|&(?:[:_A-z][-.0-9:_A-z\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));)*')))*[\x09\x0A\x0D\x20]*>|(?:<!ENTITY[\x09\x0A\x0D\x20]+[:_A-z][-.0-9:_A-z\xB7]*[\x09\x0A\x0D\x20]+(?:(?:"(?:[^%&"]|%[:_A-z][-.0-9:_A-z\xB7]*;|&(?:[:_A-z][-.0-9:_A-z\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));)*"|'(?:[^%&']|%[:_A-z][-.0-9:_A-z\xB7]*;|&(?:[:_A-z][-.0-9:_A-z\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));)*')|(?:SYSTEM[\x09\x0A\x0D\x20]+(?:"[^"]*"|'[^']*')|PUBLIC[\x09\x0A\x0D\x20]+(?:"[\x0A\x0D\x20\x21\x23-\x25\x27-\x2F\x3A\x3B\x3D\x3F\x40_0-9A-z]*"|'[\x0A\x0D\x20\x21\x23-\x25\x28-\x2F\x3A\x3B\x3D\x3F\x40_0-9A-z]*')[\x09\x0A\x0D\x20]+(?:"[^"]*"|'[^']*'))(?:[\x09\x0A\x0D\x20]+NDATA[\x09\x0A\x0D\x20]+[:_A-z][-.0-9:_A-z\xB7]*)?)[\x09\x0A\x0D\x20]*>|<!ENTITY[\x09\x0A\x0D\x20]+%[\x09\x0A\x0D\x20]+[:_A-z][-.0-9:_A-z\xB7]*[\x09\x0A\x0D\x20]+(?:(?:"(?:[^%&"]|%[:_A-z][-.0-9:_A-z\xB7]*;|&(?:[:_A-z][-.0-9:_A-z\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));)*"|'(?:[^%&']|%[:_A-z][-.0-9:_A-z\xB7]*;|&(?:[:_A-z][-.0-9:_A-z\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));)*')|(?:SYSTEM[\x09\x0A\x0D\x20]+(?:"[^"]*"|'[^']*')|PUBLIC[\x09\x0A\x0D\x20]+(?:"[\x0A\x0D\x20\x21\x23-\x25\x27-\x2F\x3A\x3B\x3D\x3F\x40_0-9A-z]*"|'[\x0A\x0D\x20\x21\x23-\x25\x28-\x2F\x3A\x3B\x3D\x3F\x40_0-9A-z]*')[\x09\x0A\x0D\x20]+(?:"[^"]*"|'[^']*')))[\x09\x0A\x0D\x20]*>)|<!NOTATION[\x09\x0A\x0D\x20]+[:_A-z][-.0-9:_A-z\xB7]*[\x09\x0A\x0D\x20]+(?:(?:SYSTEM[\x09\x0A\x0D\x20]+(?:"[^"]*"|'[^']*')|PUBLIC[\x09\x0A\x0D\x20]+(?:"[\x0A\x0D\x20\x21\x23-\x25\x27-\x2F\x3A\x3B\x3D\x3F\x40_0-9A-z]*"|'[\x0A\x0D\x20\x21\x23-\x25\x28-\x2F\x3A\x3B\x3D\x3F\x40_0-9A-z]*')[\x09\x0A\x0D\x20]+(?:"[^"]*"|'[^']*'))|PUBLIC[\x09\x0A\x0D\x20]+(?:"[\x0A\x0D\x20\x21\x23-\x25\x27-\x2F\x3A\x3B\x3D\x3F\x40_0-9A-z]*"|'[\x0A\x0D\x20\x21\x23-\x25\x28-\x2F\x3A\x3B\x3D\x3F\x40_0-9A-z]*'))[\x09\x0A\x0D\x20]*>|<\?[:_A-z][-.0-9:_A-z\xB7]*(?<!(?i:\?xml))(?:[\x09\x0A\x0D\x20]+(?:[^\x01-\x08\x0B\x0C\x0E-\x1F\x3F]|\?(?!>))*)?\?>|<!--(?:[^\x01-\x08\x0B\x0C\x0E-\x1F\x2D]|-(?!-))*-->)|(?:%[:_A-z][-.0-9:_A-z\xB7]*;|[\x09\x0A\x0D\x20]+))*][\x09\x0A\x0D\x20]*)?>/gm; // Alternative syntax using RegExp constructor // const regex = new RegExp('(?P<Element><(?P<TagName>[:_A-z][-.0-9:_A-z\\xB7]*)(?:[\\x09\\x0A\\x0D\\x20]+[:_A-z][-.0-9:_A-z\\xB7]*[\\x09\\x0A\\x0D\\x20]*=[\\x09\\x0A\\x0D\\x20]*(?:"(?:[^<&"]|&(?:[:_A-z][-.0-9:_A-z\\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));)*"|\'(?:[^<&\']|&(?:[:_A-z][-.0-9:_A-z\\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));)*\'))*[\\x09\\x0A\\x0D\\x20]*(?:>(?:(?:[^<&\\]]|](?!]>))*(?:(?:(?P>Element)|&(?:[:_A-z][-.0-9:_A-z\\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));|<!\\[CDATA\\[(?:[^\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x5D]|](?!]>))*]]>|<\\?[:_A-z][-.0-9:_A-z\\xB7]*(?<!(?i:\\?xml))(?:[\\x09\\x0A\\x0D\\x20]+(?:[^\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x3F]|\\?(?!>))*)?\\?>|<!--(?:[^\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x2D]|-(?!-))*-->)(?:[^<&\\]]|](?!]>))*)*)<\\\/(?P=TagName)[\\x09\\x0A\\x0D\\x20]*|\\\/)>)|&(?:[:_A-z][-.0-9:_A-z\\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));|<!\\[CDATA\\[(?:[^\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x5D]|](?!]>))*]]>|<\\?[:_A-z][-.0-9:_A-z\\xB7]*(?<!(?i:\\?xml))(?:[\\x09\\x0A\\x0D\\x20]+(?:[^\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x3F]|\\?(?!>))*)?\\?>|<!--(?:[^\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x2D]|-(?!-))*-->|<!DOCTYPE[\\x09\\x0A\\x0D\\x20]+[:_A-z][-.0-9:_A-z\\xB7]*(?:[\\x09\\x0A\\x0D\\x20]+(?:SYSTEM[\\x09\\x0A\\x0D\\x20]+(?:"[^"]*"|\'[^\']*\')|PUBLIC[\\x09\\x0A\\x0D\\x20]+(?:"[\\x0A\\x0D\\x20\\x21\\x23-\\x25\\x27-\\x2F\\x3A\\x3B\\x3D\\x3F\\x40_0-9A-z]*"|\'[\\x0A\\x0D\\x20\\x21\\x23-\\x25\\x28-\\x2F\\x3A\\x3B\\x3D\\x3F\\x40_0-9A-z]*\')[\\x09\\x0A\\x0D\\x20]+(?:"[^"]*"|\'[^\']*\')))?[\\x09\\x0A\\x0D\\x20]*(?:\\[(?:(?:<!ELEMENT[\\x09\\x0A\\x0D\\x20]+[:_A-z][-.0-9:_A-z\\xB7]*[\\x09\\x0A\\x0D\\x20]+(?:EMPTY|ANY|\\([\\x09\\x0A\\x0D\\x20]*#PCDATA(?:(?:[\\x09\\x0A\\x0D\\x20]*\\|[\\x09\\x0A\\x0D\\x20]*[:_A-z][-.0-9:_A-z\\xB7]*)*[\\x09\\x0A\\x0D\\x20]*\\)\\*|[\\x09\\x0A\\x0D\\x20]*\\))|(?:(?P<choice>\\([\\x09\\x0A\\x0D\\x20]*(?:[:_A-z][-.0-9:_A-z\\xB7]*|(?P>choice)|(?P>seq))[?*+]?(?:[\\x09\\x0A\\x0D\\x20]*\\|[\\x09\\x0A\\x0D\\x20]*(?:[:_A-z][-.0-9:_A-z\\xB7]*|(?P>choice)|(?P>seq))[?*+]?)+[\\x09\\x0A\\x0D\\x20]*\\))|(?P<seq>\\([\\x09\\x0A\\x0D\\x20]*(?:[:_A-z][-.0-9:_A-z\\xB7]*|(?P>choice)|(?P>seq))[?*+]?(?:[\\x09\\x0A\\x0D\\x20]*,[\\x09\\x0A\\x0D\\x20]*(?:[:_A-z][-.0-9:_A-z\\xB7]*|(?P>choice)|(?P>seq))[?*+]?)*[\\x09\\x0A\\x0D\\x20]*\\)))[?*+]?)[\\x09\\x0A\\x0D\\x20]*>|<!ATTLIST[\\x09\\x0A\\x0D\\x20]+[:_A-z][-.0-9:_A-z\\xB7]*(?:[\\x09\\x0A\\x0D\\x20]+[:_A-z][-.0-9:_A-z\\xB7]*[\\x09\\x0A\\x0D\\x20]+(?:CDATA|(?:ID(?:REFS?)?|ENTIT(?:Y|IES)|NMTOKENS?)|(?:NOTATION[\\x09\\x0A\\x0D\\x20]+\\([\\x09\\x0A\\x0D\\x20]*[:_A-z][-.0-9:_A-z\\xB7]*(?:[\\x09\\x0A\\x0D\\x20]*\\|[\\x09\\x0A\\x0D\\x20]*[:_A-z][-.0-9:_A-z\\xB7]*)*[\\x09\\x0A\\x0D\\x20]*\\)|\\([\\x09\\x0A\\x0D\\x20]*(?:[-.0-9:_A-z\\xB7])+(?:[\\x09\\x0A\\x0D\\x20]*\\|[\\x09\\x0A\\x0D\\x20]*(?:[-.0-9:_A-z\\xB7])+)*[\\x09\\x0A\\x0D\\x20]*\\)))[\\x09\\x0A\\x0D\\x20]+(?:#(?:REQUIRED|IMPLIED)|(?:#FIXED[\\x09\\x0A\\x0D\\x20]+)?(?:"(?:[^<&"]|&(?:[:_A-z][-.0-9:_A-z\\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));)*"|\'(?:[^<&\']|&(?:[:_A-z][-.0-9:_A-z\\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));)*\')))*[\\x09\\x0A\\x0D\\x20]*>|(?:<!ENTITY[\\x09\\x0A\\x0D\\x20]+[:_A-z][-.0-9:_A-z\\xB7]*[\\x09\\x0A\\x0D\\x20]+(?:(?:"(?:[^%&"]|%[:_A-z][-.0-9:_A-z\\xB7]*;|&(?:[:_A-z][-.0-9:_A-z\\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));)*"|\'(?:[^%&\']|%[:_A-z][-.0-9:_A-z\\xB7]*;|&(?:[:_A-z][-.0-9:_A-z\\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));)*\')|(?:SYSTEM[\\x09\\x0A\\x0D\\x20]+(?:"[^"]*"|\'[^\']*\')|PUBLIC[\\x09\\x0A\\x0D\\x20]+(?:"[\\x0A\\x0D\\x20\\x21\\x23-\\x25\\x27-\\x2F\\x3A\\x3B\\x3D\\x3F\\x40_0-9A-z]*"|\'[\\x0A\\x0D\\x20\\x21\\x23-\\x25\\x28-\\x2F\\x3A\\x3B\\x3D\\x3F\\x40_0-9A-z]*\')[\\x09\\x0A\\x0D\\x20]+(?:"[^"]*"|\'[^\']*\'))(?:[\\x09\\x0A\\x0D\\x20]+NDATA[\\x09\\x0A\\x0D\\x20]+[:_A-z][-.0-9:_A-z\\xB7]*)?)[\\x09\\x0A\\x0D\\x20]*>|<!ENTITY[\\x09\\x0A\\x0D\\x20]+%[\\x09\\x0A\\x0D\\x20]+[:_A-z][-.0-9:_A-z\\xB7]*[\\x09\\x0A\\x0D\\x20]+(?:(?:"(?:[^%&"]|%[:_A-z][-.0-9:_A-z\\xB7]*;|&(?:[:_A-z][-.0-9:_A-z\\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));)*"|\'(?:[^%&\']|%[:_A-z][-.0-9:_A-z\\xB7]*;|&(?:[:_A-z][-.0-9:_A-z\\xB7]*|#(?:[0-9]+|x[0-9a-fA-F]+));)*\')|(?:SYSTEM[\\x09\\x0A\\x0D\\x20]+(?:"[^"]*"|\'[^\']*\')|PUBLIC[\\x09\\x0A\\x0D\\x20]+(?:"[\\x0A\\x0D\\x20\\x21\\x23-\\x25\\x27-\\x2F\\x3A\\x3B\\x3D\\x3F\\x40_0-9A-z]*"|\'[\\x0A\\x0D\\x20\\x21\\x23-\\x25\\x28-\\x2F\\x3A\\x3B\\x3D\\x3F\\x40_0-9A-z]*\')[\\x09\\x0A\\x0D\\x20]+(?:"[^"]*"|\'[^\']*\')))[\\x09\\x0A\\x0D\\x20]*>)|<!NOTATION[\\x09\\x0A\\x0D\\x20]+[:_A-z][-.0-9:_A-z\\xB7]*[\\x09\\x0A\\x0D\\x20]+(?:(?:SYSTEM[\\x09\\x0A\\x0D\\x20]+(?:"[^"]*"|\'[^\']*\')|PUBLIC[\\x09\\x0A\\x0D\\x20]+(?:"[\\x0A\\x0D\\x20\\x21\\x23-\\x25\\x27-\\x2F\\x3A\\x3B\\x3D\\x3F\\x40_0-9A-z]*"|\'[\\x0A\\x0D\\x20\\x21\\x23-\\x25\\x28-\\x2F\\x3A\\x3B\\x3D\\x3F\\x40_0-9A-z]*\')[\\x09\\x0A\\x0D\\x20]+(?:"[^"]*"|\'[^\']*\'))|PUBLIC[\\x09\\x0A\\x0D\\x20]+(?:"[\\x0A\\x0D\\x20\\x21\\x23-\\x25\\x27-\\x2F\\x3A\\x3B\\x3D\\x3F\\x40_0-9A-z]*"|\'[\\x0A\\x0D\\x20\\x21\\x23-\\x25\\x28-\\x2F\\x3A\\x3B\\x3D\\x3F\\x40_0-9A-z]*\'))[\\x09\\x0A\\x0D\\x20]*>|<\\?[:_A-z][-.0-9:_A-z\\xB7]*(?<!(?i:\\?xml))(?:[\\x09\\x0A\\x0D\\x20]+(?:[^\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x3F]|\\?(?!>))*)?\\?>|<!--(?:[^\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x2D]|-(?!-))*-->)|(?:%[:_A-z][-.0-9:_A-z\\xB7]*;|[\\x09\\x0A\\x0D\\x20]+))*][\\x09\\x0A\\x0D\\x20]*)?>', 'gm') const str = `<appointments> <event date="03-05-02" start-time="09:00" end-time="10:00"> <type>Meeting</type> <title>Staff Meeting</title> <description>Weekly staff meeting</description> <location>Conference Room</location> <reminder status="no"/> </event> <event date="03-06-02" start-time="14:00" end-time="15:00"> <type>Interview</type> <title>Developer Interview</title> <description>Interview new developer candidate.</description> <location>Office</location> <reminder status="yes" interval="15-min" method="ICQ"/> </event> <event date="03-15-02" start-time="13:45" end-time="15:00"> <type>Dentist</type> <title>Root Canal</title> <description>Root canal on lower left molar.</description> <location>Dr. Scrivello's Office</location> <reminder status="yes" interval="1-day" method="e-mail"/> </event> </appointments>`; // Reset `lastIndex` if this regex is defined globally // regex.lastIndex = 0; let m; while ((m = regex.exec(str)) !== null) { // This is necessary to avoid infinite loops with zero-width matches if (m.index === regex.lastIndex) { regex.lastIndex++; } // The result can be accessed through the `m`-variable. m.forEach((match, groupIndex) => { console.log(`Found match, group ${groupIndex}: ${match}`); }); }

Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions