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
No Match

/
/
gi

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 = "(#)(?:([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})?|([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])?)|(rgb|rgba)\\((?:\\s*(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)\\s*,\\s*(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)\\s*,\\s*(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)(?:\\s*,\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*|\\s*(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)\\s+(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)\\s+(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)\\s*|\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s*,\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s*,\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)(?:\\s*,\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*|\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s*|\\s*(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)\\s+(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)\\s+(0*(?:0|1[0-9]{0,2}|2(?:[0-4][0-9]?|5[0-4]?|[6-9])?|[3-9][0-9]?)(?:\\.[0-9]+)?|255(?:\\.0+)?|\\.[0-9]+)(?:\\s*(?:\\/)\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*|\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)(?:\\s*(?:\\/)\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*)\\)|(hsl|hsla)\\((?:\\s*(-?[0-9]+(?:\\.[0-9]+)?(?:deg|rad|grad|turn)?)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)(?:\\s*(?:\\/)\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*|\\s*(-?[0-9]+(?:\\.[0-9]+)?(?:deg|rad|grad|turn)?)\\s*,\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s*,\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)(?:\\s*,\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*|\\s*(-?[0-9]+(?:\\.[0-9]+)?(?:deg|rad|grad|turn)?)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s*)\\)|(hwb)\\(\\s*(-?[0-9]+(?:\\.[0-9]+)?(?:deg|rad|grad|turn)?)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)(?:(?:\\s*(?:\\/)\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*)?\\)|(lab|oklab)\\(\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)\\s+(-?(?:0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|(?:0|1(?:[0-1][0-9]?|2[0-4]?|[3-9])?|[2-9][0-9]?)(?:\\.[0-9]+)?|125(?:\\.0+)?))\\s+(-?(?:0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|(?:0|1(?:[0-1][0-9]?|2[0-4]?|[3-9])?|[2-9][0-9]?)(?:\\.[0-9]+)?|125(?:\\.0+)?))\\s*(?:(?:\\s*(?:\\/)\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*)?\\)|(lch|oklch)\\(\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?)\\s+(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|(?:0|1(?:[0-4][0-9]?|[5-9])?|[2-9][0-9]?)(?:\\.[0-9]+)?|150(?:\\.0+)?)\\s+(-?[0-9]+(?:\\.[0-9]+)?(?:deg|rad|grad|turn)?)\\s*(?:(?:\\s*(?:\\/)\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*)?\\)|(color)\\((?:(srgb|srgb-linear|display-p3|a98-rgb|prophoto-rgb|rec2020)(?:\\s+|\\s*,\\s*)(0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+|0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)(?:\\s+|\\s*,\\s*)(0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+|0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)(?:\\s+|\\s*,\\s*)(0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+|0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%)(?:(?:\\s+\\s*(?:\\/)\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*)?|(xyz|xyz-d50|xyz-d65)(?:\\s+|\\s*,\\s*)(-?[0-9]+(?:\\.[0-9]+)?%?)(?:\\s+|\\s*,\\s*)(-?[0-9]+(?:\\.[0-9]+)?%?)(?:\\s+|\\s*,\\s*)(-?[0-9]+(?:\\.[0-9]+)?%?)(?:(?:\\s+\\s*(?:\\/)\\s*(0*(?:(?:0|[1-9][0-9]?)(?:\\.[0-9]+)?|100(?:\\.0+)?|\\.[0-9]+)%|0*0*(?:\\.[0-9]+)?|1(?:\\.0+)?|\\.[0-9]+))?\\s*)?)\\)|(yellowgreen|yellow|whitesmoke|white|wheat|VisitedText|violet|turquoise|transparent|tomato|thistle|teal|tan|steelblue|springgreen|snow|slategrey|slategray|slateblue|skyblue|silver|sienna|SelectedItemText|SelectedItem|seashell|seagreen|sandybrown|salmon|saddlebrown|royalblue|rosybrown|red|rebeccapurple|purple|powderblue|plum|pink|peru|peachpuff|papayawhip|palevioletred|paleturquoise|palegreen|palegoldenrod|orchid|orangered|orange|olivedrab|olive|oldlace|navy|navajowhite|moccasin|mistyrose|mintcream|midnightblue|mediumvioletred|mediumturquoise|mediumspringgreen|mediumslateblue|mediumseagreen|mediumpurple|mediumorchid|mediumblue|mediumaquamarine|maroon|MarkText|Mark|magenta|LinkText|linen|limegreen|lime|lightyellow|lightsteelblue|lightslategrey|lightslategray|lightskyblue|lightseagreen|lightsalmon|lightpink|lightgrey|lightgreen|lightgray|lightgoldenrodyellow|lightcyan|lightcoral|lightblue|lemonchiffon|lawngreen|lavenderblush|lavender|khaki|ivory|indigo|indianred|hotpink|honeydew|HighlightText|Highlight|grey|greenyellow|green|GrayText|gray|goldenrod|gold|ghostwhite|gainsboro|fuchsia|forestgreen|floralwhite|firebrick|FieldText|Field|dodgerblue|dimgrey|dimgray|deepskyblue|deeppink|darkviolet|darkturquoise|darkslategrey|darkslategray|darkslateblue|darkseagreen|darksalmon|darkred|darkorchid|darkorange|darkolivegreen|darkmagenta|darkkhaki|darkgrey|darkgreen|darkgray|darkgoldenrod|darkcyan|darkblue|cyan|currentColor|crimson|cornsilk|cornflowerblue|coral|chocolate|chartreuse|CanvasText|Canvas|cadetblue|ButtonText|ButtonFace|ButtonBorder|burlywood|brown|blueviolet|blue|blanchedalmond|black|bisque|beige|azure|aquamarine|aqua|antiquewhite|aliceblue|ActiveText|AccentColorText|AccentColor)"; final String string = "#090\n" + "#009900\n" + "#090a\n" + "#009900aa\n\n" + "rgb(34, 12, 64, 0.6)\n" + "rgba(34, 12, 64, 0.6)\n" + "rgb(34 12 64 / 0.6)\n" + "rgba(34 12 64 / 0.3)\n" + "rgb(34 12 64 / 60%)\n" + "rgba(34.6 12 64 / 30%)\n\n" + "hsl(30, 100%, 50%, 0.6)\n" + "hsla(30, 100%, 50%, 0.6)\n" + "hsl(30 100% 50% / 0.6)\n" + "hsla(30 100% 50% / 0.6)\n" + "hsl(30 100% 50% / 60%)\n" + "hsla(30.2grad 100% 50% / 60%)\n\n" + "hwb(90 10% 10%)\n" + "hwb(90 10% 10% / 0.5)\n" + "hwb(90deg 10% 10%)\n" + "hwb(1.5708rad 60% 0%)\n" + "hwb(0.25turn 0% 40% / 50%)\n\n" + "lab(29.2345% 39.3825 20.0664)\n" + "lab(52.2345 40.1645 59.9971)\n" + "lab(60.2345 -5.3654 58.956)\n" + "lab(62.2345% -34.9638 47.7721)\n" + "lab(67.5345 -8.6911 -41.6019)\n" + "lab(29.69% 44.888% -29.04%)\n\n" + "lch(29.2345% 44.2 27)\n" + "lch(52.2345% 72.2 56.2)\n" + "lch(60.2345 59.2 95.2)\n" + "lch(62.2345% 59.2 126.2)\n" + "lch(67.5345% 42.5 258.2)\n" + "lch(29.69% 45.553% 327.1)\n\n" + "oklab(40.101% 0.1147 0.0453)\n" + "oklab(59.686% 0.1009 0.1192)\n" + "oklab(0.65125 -0.0320 0.1274)\n" + "oklab(66.016% -0.1084 0.1114)\n" + "oklab(72.322% -0.0465 -0.1150)\n" + "oklab(42.1% 41% -25%)\n\n" + "oklch(40.101% 0.12332 21.555)\n" + "oklch(59.686% 0.15619 49.7694)\n" + "oklch(0.65125 0.13138 104.097)\n" + "oklch(0.66016 0.15546 134.231)\n" + "oklch(72.322% 0.12403 247.996)\n" + "oklch(42.1% 48.25% 328.4)\n\n" + "color(srgb 100% 100% 100% / 100%)\n" + "color(xyz 999 999 999 / 100%)\n\n" + "yellowgreen\n" + "yellow\n" + "whitesmoke\n" + "white\n" + "wheat\n" + "violet\n" + "turquoise\n" + "tomato\n" + "thistle\n" + "teal\n" + "tan\n" + "steelblue\n" + "springgreen\n" + "snow\n" + "slategrey\n" + "slategray\n" + "slateblue\n" + "skyblue\n" + "silver\n" + "sienna\n" + "seashell\n" + "seagreen\n" + "sandybrown\n" + "salmon\n" + "saddlebrown\n" + "royalblue\n" + "rosybrown\n" + "red\n" + "rebeccapurple\n" + "purple\n" + "powderblue\n" + "plum\n" + "pink\n" + "peru\n" + "peachpuff\n" + "papayawhip\n" + "palevioletred\n" + "paleturquoise\n" + "palegreen\n" + "palegoldenrod\n" + "orchid\n" + "orangered\n" + "orange\n" + "olivedrab\n" + "olive\n" + "oldlace\n" + "navy\n" + "navajowhite\n" + "moccasin\n" + "mistyrose\n" + "mintcream\n" + "midnightblue\n" + "mediumvioletred\n" + "mediumturquoise\n" + "mediumspringgreen\n" + "mediumslateblue\n" + "mediumseagreen\n" + "mediumpurple\n" + "mediumorchid\n" + "mediumblue\n" + "mediumaquamarine\n" + "maroon\n" + "magenta\n" + "linen\n" + "limegreen\n" + "lime\n" + "lightyellow\n" + "lightsteelblue\n" + "lightslategrey\n" + "lightslategray\n" + "lightskyblue\n" + "lightseagreen\n" + "lightsalmon\n" + "lightpink\n" + "lightgrey\n" + "lightgreen\n" + "lightgray\n" + "lightgoldenrodyellow\n" + "lightcyan\n" + "lightcoral\n" + "lightblue\n" + "lemonchiffon\n" + "lawngreen\n" + "lavenderblush\n" + "lavender\n" + "khaki\n" + "ivory\n" + "indigo\n" + "indianred\n" + "hotpink\n" + "honeydew\n" + "grey\n" + "greenyellow\n" + "green\n" + "gray\n" + "goldenrod\n" + "gold\n" + "ghostwhite\n" + "gainsboro\n" + "fuchsia\n" + "forestgreen\n" + "floralwhite\n" + "firebrick\n" + "dodgerblue\n" + "dimgrey\n" + "dimgray\n" + "deepskyblue\n" + "deeppink\n" + "darkviolet\n" + "darkturquoise\n" + "darkslategrey\n" + "darkslategray\n" + "darkslateblue\n" + "darkseagreen\n" + "darksalmon\n" + "darkred\n" + "darkorchid\n" + "darkorange\n" + "darkolivegreen\n" + "darkmagenta\n" + "darkkhaki\n" + "darkgrey\n" + "darkgreen\n" + "darkgray\n" + "darkgoldenrod\n" + "darkcyan\n" + "darkblue\n" + "cyan\n" + "crimson\n" + "cornsilk\n" + "cornflowerblue\n" + "coral\n" + "chocolate\n" + "chartreuse\n" + "cadetblue\n" + "burlywood\n" + "brown\n" + "blueviolet\n" + "blue\n" + "blanchedalmond\n" + "black\n" + "bisque\n" + "beige\n" + "azure\n" + "aquamarine\n" + "aqua\n" + "antiquewhite\n" + "aliceblue\n\n" + "Canvas\n" + "CanvasText\n" + "LinkText\n" + "VisitedText\n" + "ActiveText\n" + "ButtonFace\n" + "ButtonText\n" + "ButtonBorder\n" + "Field\n" + "FieldText\n" + "Highlight\n" + "HighlightText\n" + "SelectedItem\n" + "SelectedItemText\n" + "Mark\n" + "MarkText\n" + "GrayText\n" + "AccentColor\n" + "AccentColorText\n\n" + "currentColor\n\n" + "transparent\n"; final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); final Matcher matcher = pattern.matcher(string); while (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