Regular Expressions 101

Save & Share

  • Regex Version: ver. 3
  • Update Regex
    ctrl+⇧+s
  • Save new Regex
    ctrl+s
  • Add to Community Library

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

/
/
gm

Test String

Code Generator

Generated Code

const regex = /^(?!(?!0* 0* 0*|0*+(?=(\d*?)((?:(?=\d+ 0*+(\d*?)(\d(?(4)\4)) 0*(\d*?)(\d\6?+)$)\d)+) )(?=(?(?!\1(?:(?=\d+ 0*\3((\7?+)\d))(?=\d(\d* 0*\3\8))(?=0\9[9]|1\9[8]|2\9[7]|3\9[6]|4\9[5]|5\9[4]|6\9[3]|7\9[2]|8\9[1]|9\9[0])\d)*+(?=\d(\d* 0*\3\8?+))(?=[5-9]\10[5-9]|1\10[9]|2\10[89]|3\10[7-9]|4\10[6-9]|6\10[4]|7\10[34]|8\10[2-4]|9\10[1-4]))(?=\d+ \d+ 0*\1\3\6$)|(?(?!.*+\3)\d+ )(?=\d*(\2|\4)( .*?0*+)\d+$)(?(?=9*\11 )(?:9(?=\d*\12[1](\13?+0)))*(?=\11 )\11\12[1]\13?+\6$|(?:(\d)(?=\d*\12(\15?+\14)))*(?=\d(\d*\12\15?+))(?=0\16[1]|1\16[2]|2\16[3]|3\16[4]|4\16[5]|5\16[6]|6\16[7]|7\16[8]|8\16[9])\d(?:9(?=\d*\12\15?+\d(\17?+0)))*?\11\s)))\1(?:(?=(\d)\d* 0*+\3((\19?+)\d)\d* 0*+\5((\21?+)\d))(?=\d(\d* 0*+\3\20)\d(\d* 0*+\5\22))(?(?!\18(?:(?=\d+ 0*+\3\19((\25?+)\d))(?=\d(\d* 0*+\3\19\26))(?=0\27[9]|1\27[8]|2\27[7]|3\27[6]|4\27[5]|5\27[4]|6\27[3]|7\27[2]|8\27[1]|9\27[0])\d)*+(?=\d(\d* 0*+\3\19\26?+))(?=[5-9]\28[5-9]|1\28[9]|2\28[89]|3\28[7-9]|4\28[6-9]|6\28[4]|7\28[34]|8\28[2-4]|9\28[1-4]))(?=1\23(?:1\24[2]|2\24[3]|3\24[4]|4\24[5]|5\24[6]|6\24[7]|7\24[8]|8\24[9]|9\24[0])|2\23(?:1\24[3]|2\24[4]|3\24[5]|4\24[6]|5\24[7]|6\24[8]|7\24[9]|8\24[0]|9\24[1])|3\23(?:1\24[4]|2\24[5]|3\24[6]|4\24[7]|5\24[8]|6\24[9]|7\24[0]|8\24[1]|9\24[2])|4\23(?:1\24[5]|2\24[6]|3\24[7]|4\24[8]|5\24[9]|6\24[0]|7\24[1]|8\24[2]|9\24[3])|5\23(?:1\24[6]|2\24[7]|3\24[8]|4\24[9]|5\24[0]|6\24[1]|7\24[2]|8\24[3]|9\24[4])|6\23(?:1\24[7]|2\24[8]|3\24[9]|4\24[0]|5\24[1]|6\24[2]|7\24[3]|8\24[4]|9\24[5])|7\23(?:1\24[8]|2\24[9]|3\24[0]|4\24[1]|5\24[2]|6\24[3]|7\24[4]|8\24[5]|9\24[6])|8\23(?:1\24[9]|2\24[0]|3\24[1]|4\24[2]|5\24[3]|6\24[4]|7\24[5]|8\24[6]|9\24[7])|9\23(?:1\24[0]|2\24[1]|3\24[2]|4\24[3]|5\24[4]|6\24[5]|7\24[6]|8\24[7]|9\24[8])|0\23(\d)\24\29|(\d)\23[0]\24\30)|(?=1\23(?:0\24[2]|1\24[3]|2\24[4]|3\24[5]|4\24[6]|5\24[7]|6\24[8]|7\24[9]|8\24[0]|9\24[1])|2\23(?:0\24[3]|1\24[4]|2\24[5]|3\24[6]|4\24[7]|5\24[8]|6\24[9]|7\24[0]|8\24[1]|9\24[2])|3\23(?:0\24[4]|1\24[5]|2\24[6]|3\24[7]|4\24[8]|5\24[9]|6\24[0]|7\24[1]|8\24[2]|9\24[3])|4\23(?:0\24[5]|1\24[6]|2\24[7]|3\24[8]|4\24[9]|5\24[0]|6\24[1]|7\24[2]|8\24[3]|9\24[4])|5\23(?:0\24[6]|1\24[7]|2\24[8]|3\24[9]|4\24[0]|5\24[1]|6\24[2]|7\24[3]|8\24[4]|9\24[5])|6\23(?:0\24[7]|1\24[8]|2\24[9]|3\24[0]|4\24[1]|5\24[2]|6\24[3]|7\24[4]|8\24[5]|9\24[6])|7\23(?:0\24[8]|1\24[9]|2\24[0]|3\24[1]|4\24[2]|5\24[3]|6\24[4]|7\24[5]|8\24[6]|9\24[7])|8\23(?:0\24[9]|1\24[0]|2\24[1]|3\24[2]|4\24[3]|5\24[4]|6\24[5]|7\24[6]|8\24[7]|9\24[8])|9\23(?:0\24[0]|1\24[1]|2\24[2]|3\24[3]|4\24[4]|5\24[5]|6\24[6]|7\24[7]|8\24[8]|9\24[9])|0\23(?:0\24[1]|1\24[2]|2\24[3]|3\24[4]|4\24[5]|5\24[6]|6\24[7]|7\24[8]|8\24[9]|9\24[0])))\d)+\s)).+/gm; // Alternative syntax using RegExp constructor // const regex = new RegExp('^(?!(?!0* 0* 0*|0*+(?=(\\d*?)((?:(?=\\d+ 0*+(\\d*?)(\\d(?(4)\\4)) 0*(\\d*?)(\\d\\6?+)$)\\d)+) )(?=(?(?!\\1(?:(?=\\d+ 0*\\3((\\7?+)\\d))(?=\\d(\\d* 0*\\3\\8))(?=0\\9[9]|1\\9[8]|2\\9[7]|3\\9[6]|4\\9[5]|5\\9[4]|6\\9[3]|7\\9[2]|8\\9[1]|9\\9[0])\\d)*+(?=\\d(\\d* 0*\\3\\8?+))(?=[5-9]\\10[5-9]|1\\10[9]|2\\10[89]|3\\10[7-9]|4\\10[6-9]|6\\10[4]|7\\10[34]|8\\10[2-4]|9\\10[1-4]))(?=\\d+ \\d+ 0*\\1\\3\\6$)|(?(?!.*+\\3)\\d+ )(?=\\d*(\\2|\\4)( .*?0*+)\\d+$)(?(?=9*\\11 )(?:9(?=\\d*\\12[1](\\13?+0)))*(?=\\11 )\\11\\12[1]\\13?+\\6$|(?:(\\d)(?=\\d*\\12(\\15?+\\14)))*(?=\\d(\\d*\\12\\15?+))(?=0\\16[1]|1\\16[2]|2\\16[3]|3\\16[4]|4\\16[5]|5\\16[6]|6\\16[7]|7\\16[8]|8\\16[9])\\d(?:9(?=\\d*\\12\\15?+\\d(\\17?+0)))*?\\11\\s)))\\1(?:(?=(\\d)\\d* 0*+\\3((\\19?+)\\d)\\d* 0*+\\5((\\21?+)\\d))(?=\\d(\\d* 0*+\\3\\20)\\d(\\d* 0*+\\5\\22))(?(?!\\18(?:(?=\\d+ 0*+\\3\\19((\\25?+)\\d))(?=\\d(\\d* 0*+\\3\\19\\26))(?=0\\27[9]|1\\27[8]|2\\27[7]|3\\27[6]|4\\27[5]|5\\27[4]|6\\27[3]|7\\27[2]|8\\27[1]|9\\27[0])\\d)*+(?=\\d(\\d* 0*+\\3\\19\\26?+))(?=[5-9]\\28[5-9]|1\\28[9]|2\\28[89]|3\\28[7-9]|4\\28[6-9]|6\\28[4]|7\\28[34]|8\\28[2-4]|9\\28[1-4]))(?=1\\23(?:1\\24[2]|2\\24[3]|3\\24[4]|4\\24[5]|5\\24[6]|6\\24[7]|7\\24[8]|8\\24[9]|9\\24[0])|2\\23(?:1\\24[3]|2\\24[4]|3\\24[5]|4\\24[6]|5\\24[7]|6\\24[8]|7\\24[9]|8\\24[0]|9\\24[1])|3\\23(?:1\\24[4]|2\\24[5]|3\\24[6]|4\\24[7]|5\\24[8]|6\\24[9]|7\\24[0]|8\\24[1]|9\\24[2])|4\\23(?:1\\24[5]|2\\24[6]|3\\24[7]|4\\24[8]|5\\24[9]|6\\24[0]|7\\24[1]|8\\24[2]|9\\24[3])|5\\23(?:1\\24[6]|2\\24[7]|3\\24[8]|4\\24[9]|5\\24[0]|6\\24[1]|7\\24[2]|8\\24[3]|9\\24[4])|6\\23(?:1\\24[7]|2\\24[8]|3\\24[9]|4\\24[0]|5\\24[1]|6\\24[2]|7\\24[3]|8\\24[4]|9\\24[5])|7\\23(?:1\\24[8]|2\\24[9]|3\\24[0]|4\\24[1]|5\\24[2]|6\\24[3]|7\\24[4]|8\\24[5]|9\\24[6])|8\\23(?:1\\24[9]|2\\24[0]|3\\24[1]|4\\24[2]|5\\24[3]|6\\24[4]|7\\24[5]|8\\24[6]|9\\24[7])|9\\23(?:1\\24[0]|2\\24[1]|3\\24[2]|4\\24[3]|5\\24[4]|6\\24[5]|7\\24[6]|8\\24[7]|9\\24[8])|0\\23(\\d)\\24\\29|(\\d)\\23[0]\\24\\30)|(?=1\\23(?:0\\24[2]|1\\24[3]|2\\24[4]|3\\24[5]|4\\24[6]|5\\24[7]|6\\24[8]|7\\24[9]|8\\24[0]|9\\24[1])|2\\23(?:0\\24[3]|1\\24[4]|2\\24[5]|3\\24[6]|4\\24[7]|5\\24[8]|6\\24[9]|7\\24[0]|8\\24[1]|9\\24[2])|3\\23(?:0\\24[4]|1\\24[5]|2\\24[6]|3\\24[7]|4\\24[8]|5\\24[9]|6\\24[0]|7\\24[1]|8\\24[2]|9\\24[3])|4\\23(?:0\\24[5]|1\\24[6]|2\\24[7]|3\\24[8]|4\\24[9]|5\\24[0]|6\\24[1]|7\\24[2]|8\\24[3]|9\\24[4])|5\\23(?:0\\24[6]|1\\24[7]|2\\24[8]|3\\24[9]|4\\24[0]|5\\24[1]|6\\24[2]|7\\24[3]|8\\24[4]|9\\24[5])|6\\23(?:0\\24[7]|1\\24[8]|2\\24[9]|3\\24[0]|4\\24[1]|5\\24[2]|6\\24[3]|7\\24[4]|8\\24[5]|9\\24[6])|7\\23(?:0\\24[8]|1\\24[9]|2\\24[0]|3\\24[1]|4\\24[2]|5\\24[3]|6\\24[4]|7\\24[5]|8\\24[6]|9\\24[7])|8\\23(?:0\\24[9]|1\\24[0]|2\\24[1]|3\\24[2]|4\\24[3]|5\\24[4]|6\\24[5]|7\\24[6]|8\\24[7]|9\\24[8])|9\\23(?:0\\24[0]|1\\24[1]|2\\24[2]|3\\24[3]|4\\24[4]|5\\24[5]|6\\24[6]|7\\24[7]|8\\24[8]|9\\24[9])|0\\23(?:0\\24[1]|1\\24[2]|2\\24[3]|3\\24[4]|4\\24[5]|5\\24[6]|6\\24[7]|7\\24[8]|8\\24[9]|9\\24[0])))\\d)+\\s)).+', 'gm') const str = `0 1 2 10 20 1000 10 20 30 28657 46368 75025 0 0 0 8235 49 8284 4 145 149 4705 485 5191 821 75 897 74 497 572 1917 27 1944 89124 3 89128 6858 8669 15527 84916 4 84921 935 63 999 1 9 11 7203 26154 33358 2 765 767 267 8031 8298 2062 188 2251 38 7869 7907 59 85041 85101 705 220 926 71982 2346 74328 9 1 11 3 8117 8120 720 208 928 4 83 88 109 21854 21964 35019 44355 79375 7 9 17 2126 752 2879 2268 53 2321 9 37717 37726 5 949 954`; // 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