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

const regex = /<tr>\n<td style="background:#(.*)"> .*\n<td> (.*) <...>\n<td> (.*)/g; // Alternative syntax using RegExp constructor // const regex = new RegExp('<tr>\\n<td style="background:#(.*)"> .*\\n<td> (.*) <...>\\n<td> (.*)', 'g') const str = `<table class="sortable wikitable jquery-tablesorter"> <caption><b>Palette Colors (128)</b> </caption> <thead><tr> <th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending"> Color </th> <th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending"> Number </th> <th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending"> Name </th></tr></thead><tbody> <tr> <td style="background:#27462D"> <span style="display: none">0.366</span> </td> <td> 141 </td> <td> Earth green </td></tr> <tr> <td style="background:#506D54"> <span style="display: none">0.356</span> </td> <td> 301 </td> <td> Slime green </td></tr> <tr> <td style="background:#008F9C"> <span style="display: none">0.514</span> </td> <td> 107 </td> <td> Bright bluish green </td></tr> <tr> <td style="background:#1B2A35"> <span style="display: none">0.571</span> </td> <td> 26 </td> <td> Black </td></tr> <tr> <td style="background:#2154B9"> <span style="display: none">0.611</span> </td> <td> 1012 </td> <td> Deep blue </td></tr> <tr> <td style="background:#0010B0"> <span style="display: none">0.652</span> </td> <td> 303 </td> <td> Dark blue </td></tr> <tr> <td style="background:#002060"> <span style="display: none">0.611</span> </td> <td> 1011 </td> <td> Navy blue </td></tr> <tr> <td style="background:#2C651D"> <span style="display: none">0.299</span> </td> <td> 304 </td> <td> Parsley green </td></tr> <tr> <td style="background:#287F47"> <span style="display: none">0.393</span> </td> <td> 28 </td> <td> Dark green </td></tr> <tr> <td style="background:#12EED4"> <span style="display: none">0.480</span> </td> <td> 1018 </td> <td> Teal </td></tr> <tr> <td style="background:#5B5D69"> <span style="display: none">0.643</span> </td> <td> 302 </td> <td> Smoky grey </td></tr> <tr> <td style="background:#527CAE"> <span style="display: none">0.591</span> </td> <td> 305 </td> <td> Steel blue </td></tr> <tr> <td style="background:#335882"> <span style="display: none">0.589</span> </td> <td> 306 </td> <td> Storm blue </td></tr> <tr> <td style="background:#102ADC"> <span style="display: none">0.645</span> </td> <td> 307 </td> <td> Lapis </td></tr> <tr> <td style="background:#3D1585"> <span style="display: none">0.726</span> </td> <td> 308 </td> <td> Dark indigo </td></tr> <tr> <td style="background:#3A7D15"> <span style="display: none">0.274</span> </td> <td> 1021 </td> <td> Camo </td></tr> <tr> <td style="background:#348E40"> <span style="display: none">0.356</span> </td> <td> 309 </td> <td> Sea green </td></tr> <tr> <td style="background:#5B9A4C"> <span style="display: none">0.301</span> </td> <td> 310 </td> <td> Shamrock </td></tr> <tr> <td style="background:#00FFFF"> <span style="display: none">0.500</span> </td> <td> 1019 </td> <td> Toothpaste </td></tr> <tr> <td style="background:#74869D"> <span style="display: none">0.593</span> </td> <td> 135 </td> <td> Sand blue </td></tr> <tr> <td style="background:#6E99CA"> <span style="display: none">0.589</span> </td> <td> 102 </td> <td> Medium blue </td></tr> <tr> <td style="background:#0D69AC"> <span style="display: none">0.570</span> </td> <td> 23 </td> <td> Bright blue </td></tr> <tr> <td style="background:#0000FF"> <span style="display: none">0.667</span> </td> <td> 1010 </td> <td> Really blue </td></tr> <tr> <td style="background:#592259"> <span style="display: none">0.833</span> </td> <td> 312 </td> <td> Mulberry </td></tr> <tr> <td style="background:#1F801D"> <span style="display: none">0.330</span> </td> <td> 313 </td> <td> Forest green </td></tr> <tr> <td style="background:#4B974B"> <span style="display: none">0.333</span> </td> <td> 37 </td> <td> Bright green </td></tr> <tr> <td style="background:#7F8E64"> <span style="display: none">0.226</span> </td> <td> 1022 </td> <td> Grime </td></tr> <tr> <td style="background:#00FF00"> <span style="display: none">0.333</span> </td> <td> 1020 </td> <td> Lime green </td></tr> <tr> <td style="background:#9FF3E9"> <span style="display: none">0.480</span> </td> <td> 1027 </td> <td> Pastel blue-green </td></tr> <tr> <td style="background:#9FA1AC"> <span style="display: none">0.641</span> </td> <td> 311 </td> <td> Fossil </td></tr> <tr> <td style="background:#0989CF"> <span style="display: none">0.559</span> </td> <td> 315 </td> <td> Electric blue </td></tr> <tr> <td style="background:#8C5B9F"> <span style="display: none">0.787</span> </td> <td> 1023 </td> <td> Lavender </td></tr> <tr> <td style="background:#6225D1"> <span style="display: none">0.726</span> </td> <td> 1031 </td> <td> Royal purple </td></tr> <tr> <td style="background:#7B007B"> <span style="display: none">0.833</span> </td> <td> 316 </td> <td> Eggplant </td></tr> <tr> <td style="background:#789082"> <span style="display: none">0.403</span> </td> <td> 151 </td> <td> Sand green </td></tr> <tr> <td style="background:#7C9C6B"> <span style="display: none">0.276</span> </td> <td> 317 </td> <td> Moss </td></tr> <tr> <td style="background:#8AAB85"> <span style="display: none">0.311</span> </td> <td> 318 </td> <td> Artichoke </td></tr> <tr> <td style="background:#B9C4B1"> <span style="display: none">0.263</span> </td> <td> 319 </td> <td> Sage green </td></tr> <tr> <td style="background:#AFDDFF"> <span style="display: none">0.571</span> </td> <td> 1024 </td> <td> Pastel light blue </td></tr> <tr> <td style="background:#9FADC0"> <span style="display: none">0.596</span> </td> <td> 314 </td> <td> Cadet blue </td></tr> <tr> <td style="background:#04AFEC"> <span style="display: none">0.544</span> </td> <td> 1013 </td> <td> Cyan </td></tr> <tr> <td style="background:#B480FF"> <span style="display: none">0.735</span> </td> <td> 1006 </td> <td> Alder </td></tr> <tr> <td style="background:#A75E9B"> <span style="display: none">0.861</span> </td> <td> 321 </td> <td> Lilac </td></tr> <tr> <td style="background:#7B2F7B"> <span style="display: none">0.833</span> </td> <td> 322 </td> <td> Plum </td></tr> <tr> <td style="background:#6B327C"> <span style="display: none">0.795</span> </td> <td> 104 </td> <td> Bright violet </td></tr> <tr> <td style="background:#C1BE42"> <span style="display: none">0.163</span> </td> <td> 1008 </td> <td> Olive </td></tr> <tr> <td style="background:#A4BD47"> <span style="display: none">0.202</span> </td> <td> 119 </td> <td> Br. yellowish green </td></tr> <tr> <td style="background:#94BE81"> <span style="display: none">0.281</span> </td> <td> 323 </td> <td> Olivine </td></tr> <tr> <td style="background:#A8BD99"> <span style="display: none">0.264</span> </td> <td> 324 </td> <td> Laurel green </td></tr> <tr> <td style="background:#DFDFDE"> <span style="display: none">0.167</span> </td> <td> 325 </td> <td> Quill grey </td></tr> <tr> <td style="background:#CACBD1"> <span style="display: none">0.643</span> </td> <td> 320 </td> <td> Ghost grey </td></tr> <tr> <td style="background:#80BBDB"> <span style="display: none">0.559</span> </td> <td> 11 </td> <td> Pastel Blue </td></tr> <tr> <td style="background:#B1A7FF"> <span style="display: none">0.686</span> </td> <td> 1026 </td> <td> Pastel violet </td></tr> <tr> <td style="background:#FF66CC"> <span style="display: none">0.889</span> </td> <td> 1016 </td> <td> Pink </td></tr> <tr> <td style="background:#FF00BF"> <span style="display: none">0.875</span> </td> <td> 1032 </td> <td> Hot pink </td></tr> <tr> <td style="background:#AA00AA"> <span style="display: none">0.833</span> </td> <td> 1015 </td> <td> Magenta </td></tr> <tr> <td style="background:#970000"> <span style="display: none">0.000</span> </td> <td> 327 </td> <td> Crimson </td></tr> <tr> <td style="background:#FFAF00"> <span style="display: none">0.114</span> </td> <td> 1017 </td> <td> Deep orange </td></tr> <tr> <td style="background:#FFFF00"> <span style="display: none">0.167</span> </td> <td> 1009 </td> <td> New Yeller </td></tr> <tr> <td style="background:#A1C48C"> <span style="display: none">0.271</span> </td> <td> 29 </td> <td> Medium green </td></tr> <tr> <td style="background:#B1E5A6"> <span style="display: none">0.304</span> </td> <td> 328 </td> <td> Mint </td></tr> <tr> <td style="background:#CCFFCC"> <span style="display: none">0.333</span> </td> <td> 1028 </td> <td> Pastel green </td></tr> <tr> <td style="background:#E5E4DF"> <span style="display: none">0.139</span> </td> <td> 208 </td> <td> Light stone grey </td></tr> <tr> <td style="background:#B4D2E4"> <span style="display: none">0.562</span> </td> <td> 45 </td> <td> Light blue </td></tr> <tr> <td style="background:#98C2DB"> <span style="display: none">0.562</span> </td> <td> 329 </td> <td> Baby blue </td></tr> <tr> <td style="background:#FF98DC"> <span style="display: none">0.890</span> </td> <td> 330 </td> <td> Carnation pink </td></tr> <tr> <td style="background:#FF5959"> <span style="display: none">0.000</span> </td> <td> 331 </td> <td> Persimmon </td></tr> <tr> <td style="background:#FF0000"> <span style="display: none">0.000</span> </td> <td> 1004 </td> <td> Really red </td></tr> <tr> <td style="background:#C4281C"> <span style="display: none">0.012</span> </td> <td> 21 </td> <td> Bright red </td></tr> <tr> <td style="background:#750000"> <span style="display: none">0.000</span> </td> <td> 332 </td> <td> Maroon </td></tr> <tr> <td style="background:#EFB838"> <span style="display: none">0.117</span> </td> <td> 333 </td> <td> Gold </td></tr> <tr> <td style="background:#F5CD30"> <span style="display: none">0.133</span> </td> <td> 24 </td> <td> Bright yellow </td></tr> <tr> <td style="background:#F8D96D"> <span style="display: none">0.129</span> </td> <td> 334 </td> <td> Daisy orange </td></tr> <tr> <td style="background:#FDEA8D"> <span style="display: none">0.138</span> </td> <td> 226 </td> <td> Cool yellow </td></tr> <tr> <td style="background:#FFFFCC"> <span style="display: none">0.167</span> </td> <td> 1029 </td> <td> Pastel yellow </td></tr> <tr> <td style="background:#E7E7EC"> <span style="display: none">0.667</span> </td> <td> 335 </td> <td> Pearl </td></tr> <tr> <td style="background:#C7D4E4"> <span style="display: none">0.592</span> </td> <td> 336 </td> <td> Fog </td></tr> <tr> <td style="background:#E0B2D0"> <span style="display: none">0.891</span> </td> <td> 342 </td> <td> Mauve </td></tr> <tr> <td style="background:#D490BD"> <span style="display: none">0.890</span> </td> <td> 343 </td> <td> Sunrise </td></tr> <tr> <td style="background:#BE6862"> <span style="display: none">0.011</span> </td> <td> 338 </td> <td> Terra Cotta </td></tr> <tr> <td style="background:#A34B4B"> <span style="display: none">0.000</span> </td> <td> 1007 </td> <td> Dusty Rose </td></tr> <tr> <td style="background:#562424"> <span style="display: none">0.000</span> </td> <td> 339 </td> <td> Cocoa </td></tr> <tr> <td style="background:#D5733D"> <span style="display: none">0.059</span> </td> <td> 1005 </td> <td> Neon orange </td></tr> <tr> <td style="background:#DA8541"> <span style="display: none">0.074</span> </td> <td> 106 </td> <td> Bright orange </td></tr> <tr> <td style="background:#F1E7C7"> <span style="display: none">0.127</span> </td> <td> 340 </td> <td> Wheat </td></tr> <tr> <td style="background:#FEF3BB"> <span style="display: none">0.139</span> </td> <td> 341 </td> <td> Buttermilk </td></tr> <tr> <td style="background:#F8F8F8"> <span style="display: none">0.000</span> </td> <td> 1001 </td> <td> Institutional white </td></tr> <tr> <td style="background:#F2F3F3"> <span style="display: none">0.500</span> </td> <td> 1 </td> <td> White </td></tr> <tr> <td style="background:#E8BAC8"> <span style="display: none">0.949</span> </td> <td> 9 </td> <td> Light reddish violet </td></tr> <tr> <td style="background:#FFC9C9"> <span style="display: none">0.000</span> </td> <td> 1025 </td> <td> Pastel orange </td></tr> <tr> <td style="background:#FF9494"> <span style="display: none">0.000</span> </td> <td> 337 </td> <td> Salmon </td></tr> <tr> <td style="background:#965555"> <span style="display: none">0.000</span> </td> <td> 344 </td> <td> Tawny </td></tr> <tr> <td style="background:#744747"> <span style="display: none">0.000</span> </td> <td> 345 </td> <td> Rust </td></tr> <tr> <td style="background:#AA5500"> <span style="display: none">0.083</span> </td> <td> 1014 </td> <td> CGA brown </td></tr> <tr> <td style="background:#E29B40"> <span style="display: none">0.094</span> </td> <td> 105 </td> <td> Br. yellowish orange </td></tr> <tr> <td style="background:#D3BE96"> <span style="display: none">0.109</span> </td> <td> 346 </td> <td> Cashmere </td></tr> <tr> <td style="background:#E2DCBC"> <span style="display: none">0.140</span> </td> <td> 347 </td> <td> Khaki </td></tr> <tr> <td style="background:#EDEAEA"> <span style="display: none">0.000</span> </td> <td> 348 </td> <td> Lily white </td></tr> <tr> <td style="background:#E9DADA"> <span style="display: none">0.000</span> </td> <td> 349 </td> <td> Seashell </td></tr> <tr> <td style="background:#FFCC99"> <span style="display: none">0.083</span> </td> <td> 1030 </td> <td> Pastel brown </td></tr> <tr> <td style="background:#EAB892"> <span style="display: none">0.072</span> </td> <td> 125 </td> <td> Light orange </td></tr> <tr> <td style="background:#DA867A"> <span style="display: none">0.021</span> </td> <td> 101 </td> <td> Medium red </td></tr> <tr> <td style="background:#883E3E"> <span style="display: none">0.000</span> </td> <td> 350 </td> <td> Burgandy </td></tr> <tr> <td style="background:#694028"> <span style="display: none">0.062</span> </td> <td> 192 </td> <td> Reddish brown </td></tr> <tr> <td style="background:#BC9B5D"> <span style="display: none">0.109</span> </td> <td> 351 </td> <td> Cork </td></tr> <tr> <td style="background:#C7AC78"> <span style="display: none">0.110</span> </td> <td> 352 </td> <td> Burlap </td></tr> <tr> <td style="background:#CABFA3"> <span style="display: none">0.120</span> </td> <td> 353 </td> <td> Beige </td></tr> <tr> <td style="background:#BBB3B2"> <span style="display: none">0.019</span> </td> <td> 354 </td> <td> Oyster </td></tr> <tr> <td style="background:#CDCDCD"> <span style="display: none">0.000</span> </td> <td> 1002 </td> <td> Mid gray </td></tr> <tr> <td style="background:#D7C59A"> <span style="display: none">0.117</span> </td> <td> 5 </td> <td> Brick yellow </td></tr> <tr> <td style="background:#CC8E69"> <span style="display: none">0.062</span> </td> <td> 18 </td> <td> Nougat </td></tr> <tr> <td style="background:#7C5C46"> <span style="display: none">0.068</span> </td> <td> 217 </td> <td> Brown </td></tr> <tr> <td style="background:#6C584B"> <span style="display: none">0.066</span> </td> <td> 355 </td> <td> Pine Cone </td></tr> <tr> <td style="background:#A0844F"> <span style="display: none">0.109</span> </td> <td> 356 </td> <td> Fawn brown </td></tr> <tr> <td style="background:#957977"> <span style="display: none">0.011</span> </td> <td> 153 </td> <td> Sand red </td></tr> <tr> <td style="background:#958988"> <span style="display: none">0.013</span> </td> <td> 357 </td> <td> Hurricane grey </td></tr> <tr> <td style="background:#ABA89E"> <span style="display: none">0.128</span> </td> <td> 358 </td> <td> Cloudy grey </td></tr> <tr> <td style="background:#AF9483"> <span style="display: none">0.064</span> </td> <td> 359 </td> <td> Linen </td></tr> <tr> <td style="background:#966766"> <span style="display: none">0.003</span> </td> <td> 360 </td> <td> Copper </td></tr> <tr> <td style="background:#A05F35"> <span style="display: none">0.065</span> </td> <td> 38 </td> <td> Dark orange </td></tr> <tr> <td style="background:#564236"> <span style="display: none">0.063</span> </td> <td> 361 </td> <td> Dirt brown </td></tr> <tr> <td style="background:#7E683F"> <span style="display: none">0.108</span> </td> <td> 362 </td> <td> Bronze </td></tr> <tr> <td style="background:#635F62"> <span style="display: none">0.875</span> </td> <td> 199 </td> <td> Dark stone grey </td></tr> <tr> <td style="background:#A3A2A5"> <span style="display: none">0.722</span> </td> <td> 194 </td> <td> Medium stone grey </td></tr> <tr> <td style="background:#69665C"> <span style="display: none">0.128</span> </td> <td> 363 </td> <td> Flint </td></tr> <tr> <td style="background:#5A4C42"> <span style="display: none">0.069</span> </td> <td> 364 </td> <td> Dark taupe </td></tr> <tr> <td style="background:#6A3909"> <span style="display: none">0.082</span> </td> <td> 365 </td> <td> Burnt Sienna </td></tr> <tr> <td style="background:#111111"> <span style="display: none">0.000</span> </td> <td> 1003 </td> <td> Really black </td></tr> </tbody><tfoot></tfoot></table>`; // Reset `lastIndex` if this regex is defined globally // regex.lastIndex = 0; let m; while ((m = regex.exec(str)) !== null) { // This is necessary to avoid infinite loops with zero-width matches if (m.index === regex.lastIndex) { regex.lastIndex++; } // The result can be accessed through the `m`-variable. m.forEach((match, groupIndex) => { console.log(`Found match, group ${groupIndex}: ${match}`); }); }

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 JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions