Regular Expressions 101

Save & Share

  • Save new Regex
    ctrl+s
  • Update Regex
    ctrl+⇧+s
  • Add to Community Library

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
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
  • Match everything enclosed
    (?:...)
  • Capture everything enclosed
    (...)
  • 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
No Match

/
/
gm

Test String

Code Generator

Generated Code

const regex = /(MacBook(10|9)|MacBookAir(10|[7-9])|Macmini[7-9]|MacPro[6-7]|iMacPro1|iMac(1[6-9]|2[0-2])),\d|MacBookPro1(1,[45]|[2-8],\d)/gm; // Alternative syntax using RegExp constructor // const regex = new RegExp('(MacBook(10|9)|MacBookAir(10|[7-9])|Macmini[7-9]|MacPro[6-7]|iMacPro1|iMac(1[6-9]|2[0-2])),\\d|MacBookPro1(1,[45]|[2-8],\\d)', 'gm') const str = `Model information: https://support.apple.com/en-us/HT212551 Published Date: October 28, 2021 Verification: https://regex101.com/r/OozSRv/5 1) Regex matches major identifier — Matches major model identifier numbers based on Apple's knowledge base article (more accurate): (MacBook(10|9)|MacBookAir(10|[7-9])|Macmini[7-9]|MacPro[6-7]|iMacPro1|iMac(1[6-9]|2[0-2])),\\d|MacBookPro1(1,[45]|[2-8],\\d) 2) Regex matches current or higher — Matches model identifiers based on Apple's knowledge base article and may match higher versions before this regex is updated (more future-proof). (MacBook(9|\\d{2})|MacBookAir([7-9]|\\d{2})|Macmini([7-9]|\\d{2})|MacPro([6-9]|1\\d)|iMacPro[1-9]|iMac(1[6-9]|2[0-9])),\\d|MacBookPro1(1,[45]|[2-9],\\d) Either regex will match any of the supported following model identifiers: https://support.apple.com/en-us/HT201608 Supported: MacBook10,1 MacBook9,1 Unsupported: MacBook8,1 MacBook7,1 MacBook6,1 MacBook5,2 MacBook5,1 MacBook4,1 MacBook3,1 MacBook2,1 MacBook1,1 https://support.apple.com/en-us/HT201862 Supported: MacBookAir10,1 MacBookAir9,1 MacBookAir8,2 MacBookAir8,1 MacBookAir7,2 MacBookAir7,2 MacBookAir7,1 Unsupported: MacBookAir6,2 MacBookAir6,1 MacBookAir5,2 MacBookAir5,1 MacBookAir4,2 MacBookAir4,1 MacBookAir3,2 MacBookAir3,1 MacBookAir2,1 MacBookAir1,1 https://support.apple.com/en-us/HT201300 Supported: MacBookPro18,2 MacBookPro18,1 MacBookPro17,1 MacBookPro16,4 MacBookPro16,3 MacBookPro16,2 MacBookPro16,1 MacBookPro15,4 MacBookPro15,3 MacBookPro15,2 MacBookPro15,1 MacBookPro14,3 MacBookPro14,2 MacBookPro14,1 MacBookPro13,3 MacBookPro13,2 MacBookPro13,1 MacBookPro12,1 MacBookPro11,5 MacBookPro11,4 Unsupported: MacBookPro11,3 MacBookPro11,2 MacBookPro11,1 MacBookPro10,2 MacBookPro10,1 MacBookPro9,2 MacBookPro9,1 MacBookPro8,3 MacBookPro8,2 MacBookPro8,1 MacBookPro7,1 MacBookPro6,2 MacBookPro6,1 MacBookPro5,5 MacBookPro5,4 MacBookPro5,3 MacBookPro5,2 MacBookPro5,1 MacBookPro4,1 MacBookPro3,1 MacBookPro2,2 MacBookPro2,1 MacBookPro1,2 MacBookPro1,1 https://support.apple.com/en-us/HT201894 Supported: Macmini9,1 Macmini8,1 Macmini7,1 Unsupported: Macmini6,2 Macmini6,1 Macmini5,3 Macmini5,2 Macmini5,1 Macmini4,1 Macmini3,1 Macmini2,1 Macmini1,1 https://support.apple.com/en-us/HT201634 Supported: iMac21,2 iMac21,1 iMac20,2 iMac20,1 iMac19,2 iMac19,1 iMac18,3 iMac18,2 iMac18,1 iMac17,1 iMac16,2 iMac16,1 Unsupported: iMac15,1 iMac14,4 iMac14,3 iMac14,2 iMac14,1 iMac13,2 iMac13,1 iMac12,2 iMac12,1 iMac11,3 iMac11,2 iMac11,1 iMac10,1 iMac9,1 iMac8,1 iMac7,1 iMac6,1 iMac5,2 iMac5,1 iMac4,2 iMac4,1 iMac,1 https://support.apple.com/en-us/HT210222 Supported: iMacPro1,1 https://support.apple.com/en-us/HT202888 Supported: MacPro7,1 MacPro6,1 Unsupported: MacPro5,1 MacPro4,1 MacPro3,1 MacPro2,1 MacPro1,1`; 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