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

using System; using System.Text.RegularExpressions; public class Example { public static void Main() { string pattern = @"(?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"; string input = @"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, "; foreach (Match m in Regex.Matches(input, pattern)) { Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index); } } }

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 C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx