Regular Expressions 101

Save & Share

  • Regex Version: ver. 1
  • Update Regex
    ctrl+⇧+s
  • Save new 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
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

use strict; my $str = 'A 1 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20 A21 A22 A23 A24 A25 A26 A27 A28 A29 A30 A31 A32 A33 A34 A35 A36 A37 A38 A39 A40 A41 A42 A43 A44 A45 A46 A47 A48 A49 A50 A51 A52 A53 A54 A55 A56 A57 A58 A59 A60 A61 A62 A63 A64 A65 A66 A67 A68 A69 A70 A71 A72 A73 A74 A75 A76 A77 A78 A79 A80 A81 A82 A83 A84 A85 A86 A87 A88 A89 A90 A91 A92 A93 A94 A95 A96 A97 A98 A99 A100 A101 A102 A103 AA1 AA2 AA3 AA4 AA5 AA6 AA7 AA8 AA9 AA10 AA11 AA12 AA13 AA14 AA15 AA16 AA17 AA18 AA19 AA20 AA21 AA22 AA23 AA24 AA25 AA26 AA27 AA28 AA29 AA30 AA31 AA32 AA33 AA34 AA35 AA36 AA37 AA38 AA39 AA40 AA41 AA42 AA43 AA44 AA45 AA46 AA47 AA48 AA49 AA50 AA51 AA52 AA53 AA54 AA55 AA56 AA57 AA58 AA59 AA60 AA61 AA62 AA63 AA64 AA65 AA66 AA67 AA68 AA69 AA70 AA71 AA72 AA73 AA74 AA75 AA76 AA77 AA78 AA79 AA80 AA81 AA82 AA83 AA84 AA85 AA86 AA87 AA88 AA89 AA90 AA91 AA92 AA93 AA94 AA95 AA96 AA97 AA98 AA99 AA100 AA101 AA102 AA103 AAA1 AAA2 AAA3 AAA4 AAA5 AAA6 AAA7 AAA8 AAA9 AAA10 AAA11 AAA12 AAA13 AAA14 AAA15 AAA16 AAA17 AAA18 AAA19 AAA20 AAA21 AAA22 AAA23 AAA24 AAA25 AAA26 AAA27 AAA28 AAA29 AAA30 AAA31 AAA32 AAA33 AAA34 AAA35 AAA36 AAA37 AAA38 AAA39 AAA40 AAA41 AAA42 AAA43 AAA44 AAA45 AAA46 AAA47 AAA48 AAA49 AAA50 AAA51 AAA52 AAA53 AAA54 AAA55 AAA56 AAA57 AAA58 AAA59 AAA60 AAA61 AAA62 AAA63 AAA64 AAA65 AAA66 AAA67 AAA68 AAA69 AAA70 AAA71 AAA72 AAA73 AAA74 AAA75 AAA76 AAA77 AAA78 AAA79 AAA80 AAA81 AAA82 AAA83 AAA84 AAA85 AAA86 AAA87 AAA88 AAA89 AAA90 AAA91 AAA92 AAA93 AAA94 AAA95 AAA96 AAA97 AAA98 AAA99 AAA100 AAA101 AAA102 AAA103'; my $regex = qr/\b(?<pool>([A-Z])\2{0,2})(?<number>(\d{1,2}(?!\d)|100))\b/mp; if ( $str =~ /$regex/g ) { print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n"; # print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n"; # print "Capture Group 2 is $2 ... and so on\n"; } # ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p' # Named capture groups can be called via $+{name}

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 Perl, please visit: http://perldoc.perl.org/perlre.html