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

/
/
x

Test String

Code Generator

Generated Code

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Example { public static void main(String[] args) { final String regex = "(?(DEFINE)\n" + "# JSON does not need backtracking if it's valid\n" + "# so everything is atomic to prevent backtracking\n" + "# regex is built per https://tools.ietf.org/html/rfc8259\n" + "(?<json>(?>\\s*(?&object)\\s*|\\s*(?&array)\\s*))\n" + "(?<object>(?>\\{\\s*(?>(?&member)(?>\\s*,\\s*(?&member))*)?\\s*\\}))\n" + "(?<member>(?>(?&string)\\s*:\\s*(?&value)))\n" + "(?<array>(?>\\[\\s*(?>(?&value)(?>\\s*,\\s*(?&value))*)?\\s*\\]))\n" + "(?<value>(?>)false|null|true|(?&object)|(?&array)|(?&number)|(?&string))\n" + "(?<number>(?>-?(?>0|[1-9][0-9]*)(?>\\.[0-9]+)?(?>[eE][-+]?[0-9]+)?))\n" + "(?<string>(?>\"(?>\\\\(?>[\"\\\\\\/bfnrt]|u[a-fA-F0-9]{4})|[^\"\\\\\\0-\\x1F\\x7F]+)*\"))\n" + ")\n" + "\\A(?&json)\\z\n"; final String string = "[\n" + " \"JSON Test Pattern pass1\",\n" + " {\"object with 1 member\":[\"array with 1 element\"]},\n" + " {},\n" + " [],\n" + " -42,\n" + " true,\n" + " false,\n" + " null,\n" + " {\n" + " \"integer\": 1234567890,\n" + " \"real\": -9876.543210,\n" + " \"e\": 0.123456789e-12,\n" + " \"E\": 1.234567890E+34,\n" + " \"\": 23456789012E66,\n" + " \"zero\": 0,\n" + " \"one\": 1,\n" + " \"space\": \" \",\n" + " \"quote\": \"\\\"\",\n" + " \"backslash\": \"\\\\\",\n" + " \"controls\": \"\\b\\f\\n\\r\\t\",\n" + " \"slash\": \"/ & \\/\",\n" + " \"alpha\": \"abcdefghijklmnopqrstuvwyz\",\n" + " \"ALPHA\": \"ABCDEFGHIJKLMNOPQRSTUVWYZ\",\n" + " \"digit\": \"0123456789\",\n" + " \"0123456789\": \"digit\",\n" + " \"special\": \"`1~!@#$%^&*()_+-={':[,]}|;.</>?\",\n" + " \"hex\": \"\\u0123\\u4567\\u89AB\\uCDEF\\uabcd\\uef4A\",\n" + " \"true\": true,\n" + " \"false\": false,\n" + " \"null\": null,\n" + " \"array\":[ ],\n" + " \"object\":{ },\n" + " \"address\": \"50 St. James Street\",\n" + " \"url\": \"http://www.JSON.org/\",\n" + " \"comment\": \"// /* <!-- --\",\n" + " \"# -- --> */\": \" \",\n" + " \" s p a c e d \" :[1,2 , 3\n\n" + ",\n\n" + "4 , 5 , 6 ,7 ],\"compact\":[1,2,3,4,5,6,7],\n" + " \"jsontext\": \"{\\\"object with 1 member\\\":[\\\"array with 1 element\\\"]}\",\n" + " \"quotes\": \"&#34; \\u0022 %22 0x22 034 &#x22;\",\n" + " \"\\/\\\\\\\"\\uCAFE\\uBABE\\uAB98\\uFCDE\\ubcda\\uef4A\\b\\f\\n\\r\\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?\"\n" + ": \"A key can be any string\"\n" + " },\n" + " 0.5 ,98.6\n" + ",\n" + "99.44\n" + ",\n\n" + "1066,\n" + "1e1,\n" + "0.1e1,\n" + "1e-1,\n" + "1e00,2e+00,2e-00\n" + ",\"rosebud\"]"; final Pattern pattern = Pattern.compile(regex, Pattern.COMMENTS); final Matcher matcher = pattern.matcher(string); if (matcher.find()) { System.out.println("Full match: " + matcher.group(0)); for (int i = 1; i <= matcher.groupCount(); i++) { System.out.println("Group " + i + ": " + matcher.group(i)); } } } }

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 Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html