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

/
/
g

Test String

Code Generator

Generated Code

use strict; my $str = 'null, null, null , null , false, false, false , false , true, true, true , true , 123, 0, -123, -0, 123.0, 0.0, -123.0, -0.0, 123e1, 0e1, -123e1, -0e1, 123.0e1, 0.0e1, -123.0e1, -0.0e1, 123e+1, 0e+1, -123e+1, -0e+1, 123.0e+1, 0.0e+1, -123.0e+1, -0.0e+1, 123e-1, 0e-1, -123e-1, -0e-1, 123.0e-1, 0.0e-1, -123.0e-1, -0.0e-1, 123E1, 0E1, -123E1, -0E1, 123.0E1, 0.0E1, -123.0E1, -0.0E1, 123E+1, 0E+1, -123E+1, -0E+1, 123.0E+1, 0.0E+1, -123.0E+1, -0.0E+1, 123E-1, 0E-1, -123E-1, -0E-1, 123.0E-1, 0.0E-1, -123.0E-1, -0.0E-1, 123, 0, -123, -0, 123.0, 0.0, -123.0, -0.0, 123e1, 0e1, -123e1, -0e1, 123.0e1, 0.0e1, -123.0e1, -0.0e1, 123e+1, 0e+1, -123e+1, -0e+1, 123.0e+1, 0.0e+1, -123.0e+1, -0.0e+1, 123e-1, 0e-1, -123e-1, -0e-1, 123.0e-1, 0.0e-1, -123.0e-1, -0.0e-1, 123E1, 0E1, -123E1, -0E1, 123.0E1, 0.0E1, -123.0E1, -0.0E1, 123E+1, 0E+1, -123E+1, -0E+1, 123.0E+1, 0.0E+1, -123.0E+1, -0.0E+1, 123E-1, 0E-1, -123E-1, -0E-1, 123.0E-1, 0.0E-1, -123.0E-1, -0.0E-1, 123 , 0 , -123 , -0 , 123.0 , 0.0 , -123.0 , -0.0 , 123e1 , 0e1 , -123e1 , -0e1 , 123.0e1 , 0.0e1 , -123.0e1 , -0.0e1 , 123e+1 , 0e+1 , -123e+1 , -0e+1 , 123.0e+1 , 0.0e+1 , -123.0e+1 , -0.0e+1 , 123e-1 , 0e-1 , -123e-1 , -0e-1 , 123.0e-1 , 0.0e-1 , -123.0e-1 , -0.0e-1 , 123E1 , 0E1 , -123E1 , -0E1 , 123.0E1 , 0.0E1 , -123.0E1 , -0.0E1 , 123E+1 , 0E+1 , -123E+1 , -0E+1 , 123.0E+1 , 0.0E+1 , -123.0E+1 , -0.0E+1 , 123E-1 , 0E-1 , -123E-1 , -0E-1 , 123.0E-1 , 0.0E-1 , -123.0E-1 , -0.0E-1 , 123 , 0 , -123 , -0 , 123.0 , 0.0 , -123.0 , -0.0 , 123e1 , 0e1 , -123e1 , -0e1 , 123.0e1 , 0.0e1 , -123.0e1 , -0.0e1 , 123e+1 , 0e+1 , -123e+1 , -0e+1 , 123.0e+1 , 0.0e+1 , -123.0e+1 , -0.0e+1 , 123e-1 , 0e-1 , -123e-1 , -0e-1 , 123.0e-1 , 0.0e-1 , -123.0e-1 , -0.0e-1 , 123E1 , 0E1 , -123E1 , -0E1 , 123.0E1 , 0.0E1 , -123.0E1 , -0.0E1 , 123E+1 , 0E+1 , -123E+1 , -0E+1 , 123.0E+1 , 0.0E+1 , -123.0E+1 , -0.0E+1 , 123E-1 , 0E-1 , -123E-1 , -0E-1 , 123.0E-1 , 0.0E-1 , -123.0E-1 , -0.0E-1 , "", "zyxwvuts", "\\\\\\/\\r\\n\\t\\f\\b", "\\u1234\\uabcd\\uABCD", "zyxwvutszyxwvuts", "zyxwvuts\\\\\\/\\r\\n\\t\\f\\b", "zyxwvuts\\u1234\\uabcd\\uABCD", "\\\\\\/\\r\\n\\t\\f\\bzyxwvuts", "\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b", "\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD", "\\u1234\\uabcd\\uABCDzyxwvuts", "\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b", "\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD", "zyxwvutszyxwvutszyxwvuts", "zyxwvuts\\\\\\/\\r\\n\\t\\f\\bzyxwvuts", "zyxwvuts\\u1234\\uabcd\\uABCDzyxwvuts", "\\\\\\/\\r\\n\\t\\f\\bzyxwvutszyxwvuts", "\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\bzyxwvuts", "\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCDzyxwvuts", "\\u1234\\uabcd\\uABCDzyxwvutszyxwvuts", "\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\bzyxwvuts", "\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCDzyxwvuts", "zyxwvutszyxwvuts\\\\\\/\\r\\n\\t\\f\\b", "zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b", "zyxwvuts\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b", "\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\\\\\\/\\r\\n\\t\\f\\b", "\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b", "\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b", "\\u1234\\uabcd\\uABCDzyxwvuts\\\\\\/\\r\\n\\t\\f\\b", "\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b", "\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b", "zyxwvutszyxwvuts\\u1234\\uabcd\\uABCD", "zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD", "zyxwvuts\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD", "\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\\u1234\\uabcd\\uABCD", "\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD", "\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD", "\\u1234\\uabcd\\uABCDzyxwvuts\\u1234\\uabcd\\uABCD", "\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD", "\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD", "", "zyxwvuts", "\\\\\\/\\r\\n\\t\\f\\b", "\\u1234\\uabcd\\uABCD", "zyxwvutszyxwvuts", "zyxwvuts\\\\\\/\\r\\n\\t\\f\\b", "zyxwvuts\\u1234\\uabcd\\uABCD", "\\\\\\/\\r\\n\\t\\f\\bzyxwvuts", "\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b", "\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD", "\\u1234\\uabcd\\uABCDzyxwvuts", "\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b", "\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD", "zyxwvutszyxwvutszyxwvuts", "zyxwvuts\\\\\\/\\r\\n\\t\\f\\bzyxwvuts", "zyxwvuts\\u1234\\uabcd\\uABCDzyxwvuts", "\\\\\\/\\r\\n\\t\\f\\bzyxwvutszyxwvuts", "\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\bzyxwvuts", "\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCDzyxwvuts", "\\u1234\\uabcd\\uABCDzyxwvutszyxwvuts", "\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\bzyxwvuts", "\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCDzyxwvuts", "zyxwvutszyxwvuts\\\\\\/\\r\\n\\t\\f\\b", "zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b", "zyxwvuts\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b", "\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\\\\\\/\\r\\n\\t\\f\\b", "\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b", "\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b", "\\u1234\\uabcd\\uABCDzyxwvuts\\\\\\/\\r\\n\\t\\f\\b", "\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b", "\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b", "zyxwvutszyxwvuts\\u1234\\uabcd\\uABCD", "zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD", "zyxwvuts\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD", "\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\\u1234\\uabcd\\uABCD", "\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD", "\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD", "\\u1234\\uabcd\\uABCDzyxwvuts\\u1234\\uabcd\\uABCD", "\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD", "\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD", "" , "zyxwvuts" , "\\\\\\/\\r\\n\\t\\f\\b" , "\\u1234\\uabcd\\uABCD" , "zyxwvutszyxwvuts" , "zyxwvuts\\\\\\/\\r\\n\\t\\f\\b" , "zyxwvuts\\u1234\\uabcd\\uABCD" , "\\\\\\/\\r\\n\\t\\f\\bzyxwvuts" , "\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b" , "\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD" , "\\u1234\\uabcd\\uABCDzyxwvuts" , "\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b" , "\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD" , "zyxwvutszyxwvutszyxwvuts" , "zyxwvuts\\\\\\/\\r\\n\\t\\f\\bzyxwvuts" , "zyxwvuts\\u1234\\uabcd\\uABCDzyxwvuts" , "\\\\\\/\\r\\n\\t\\f\\bzyxwvutszyxwvuts" , "\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\bzyxwvuts" , "\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCDzyxwvuts" , "\\u1234\\uabcd\\uABCDzyxwvutszyxwvuts" , "\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\bzyxwvuts" , "\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCDzyxwvuts" , "zyxwvutszyxwvuts\\\\\\/\\r\\n\\t\\f\\b" , "zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b" , "zyxwvuts\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b" , "\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\\\\\\/\\r\\n\\t\\f\\b" , "\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b" , "\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b" , "\\u1234\\uabcd\\uABCDzyxwvuts\\\\\\/\\r\\n\\t\\f\\b" , "\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b" , "\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b" , "zyxwvutszyxwvuts\\u1234\\uabcd\\uABCD" , "zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD" , "zyxwvuts\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD" , "\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\\u1234\\uabcd\\uABCD" , "\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD" , "\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD" , "\\u1234\\uabcd\\uABCDzyxwvuts\\u1234\\uabcd\\uABCD" , "\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD" , "\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD" , "" , "zyxwvuts" , "\\\\\\/\\r\\n\\t\\f\\b" , "\\u1234\\uabcd\\uABCD" , "zyxwvutszyxwvuts" , "zyxwvuts\\\\\\/\\r\\n\\t\\f\\b" , "zyxwvuts\\u1234\\uabcd\\uABCD" , "\\\\\\/\\r\\n\\t\\f\\bzyxwvuts" , "\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b" , "\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD" , "\\u1234\\uabcd\\uABCDzyxwvuts" , "\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b" , "\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD" , "zyxwvutszyxwvutszyxwvuts" , "zyxwvuts\\\\\\/\\r\\n\\t\\f\\bzyxwvuts" , "zyxwvuts\\u1234\\uabcd\\uABCDzyxwvuts" , "\\\\\\/\\r\\n\\t\\f\\bzyxwvutszyxwvuts" , "\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\bzyxwvuts" , "\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCDzyxwvuts" , "\\u1234\\uabcd\\uABCDzyxwvutszyxwvuts" , "\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\bzyxwvuts" , "\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCDzyxwvuts" , "zyxwvutszyxwvuts\\\\\\/\\r\\n\\t\\f\\b" , "zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b" , "zyxwvuts\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b" , "\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\\\\\\/\\r\\n\\t\\f\\b" , "\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b" , "\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b" , "\\u1234\\uabcd\\uABCDzyxwvuts\\\\\\/\\r\\n\\t\\f\\b" , "\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b" , "\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b" , "zyxwvutszyxwvuts\\u1234\\uabcd\\uABCD" , "zyxwvuts\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD" , "zyxwvuts\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD" , "\\\\\\/\\r\\n\\t\\f\\bzyxwvuts\\u1234\\uabcd\\uABCD" , "\\\\\\/\\r\\n\\t\\f\\b\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD" , "\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD" , "\\u1234\\uabcd\\uABCDzyxwvuts\\u1234\\uabcd\\uABCD" , "\\u1234\\uabcd\\uABCD\\\\\\/\\r\\n\\t\\f\\b\\u1234\\uabcd\\uABCD" , "\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD\\u1234\\uabcd\\uABCD" , {}, { }, {"1":1}, { "1" : 1 }, {"1":1,"2":2}, { "1" : 1, "2" : 2 }, {}, { }, {"1":1}, { "1" : 1 }, {"1":1,"2":2}, { "1" : 1, "2" : 2 }, {} , { } , {"1":1} , { "1" : 1 } , {"1":1,"2":2} , { "1" : 1, "2" : 2 } , {} , { } , {"1":1} , { "1" : 1 } , {"1":1,"2":2} , { "1" : 1, "2" : 2 } , [], [ ], [1], [ 1 ], [1,2], [ 1, 2 ], [], [ ], [1], [ 1 ], [1,2], [ 1, 2 ], [] , [ ] , [1] , [ 1 ] , [1,2] , [ 1, 2 ] , [] , [ ] , [1] , [ 1 ] , [1,2] , [ 1, 2 ] , {"x":{}}, {"x":[]}, { "x" : {} }, { "x" : [] }, [{}], [[]], [ { } ], [ [ ] ], {"x":{}}, {"x":[]}, { "x" : {} }, { "x" : [] }, [{}], [[]], [ { } ], [ [ ] ], {"x":{}} , {"x":[]} , { "x" : {} } , { "x" : [] } , [{}] , [[]] , [ { } ] , [ [ ] ] , {"x":{}} , {"x":[]} , { "x" : {} } , { "x" : [] } , [{}] , [[]] , [ { } ] , [ [ ] ] , #values to NOT match Null, False, True, 01, +1, 1., " " ", " \\ ", " \\x ", ""x, '; my $regex = qr/(?smx) (?(DEFINE) (?<jsonObject> \{(?&jsonField)(?>,(?&jsonField))*+\}| \{[[:space:]]*+\} ) (?<jsonArray> \[(?&jsonValue)(?>,(?&jsonValue))*+\]| \[[[:space:]]*+\] ) (?<string> " [^"\\]*+ (?> (?> \\["\\\/rntfb]| \\u[[:xdigit:]]{4} )++ [^"\\]*+ )*+ " ) (?<number> \-?+ (?> [1-9][[:digit:]]*+| 0 ) (?>\.[[:digit:]]++)?+ (?>[eE][\+\-]?+[[:digit:]]++)?+ ) (?<jsonValue> [[:space:]]*+ (?> (?&string)| (?&number)| (?&jsonObject)| (?&jsonArray)| false| true| null ) [[:space:]]*+ ) (?<jsonField> [[:space:]]*+(?&string)[[:space:]]*+\: (?&jsonValue) ) ) ^(?&jsonValue),\n/p; 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