Regular Expressions 101

Save & Share

  • Regex Version: ver. 1
  • 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

/
/
g

Test String

Code Generator

Generated Code

$re = '/(?m)^(?=(?:(?:(?(1)(?!))(.)|(?(2)(?!))(?!\1)(.)|(?(3)(?!))(?!\1|\2)(.)|(?(4)(?!))(?!\1|\2|\3)(.)|(?(5)(?!))(?!\1|\2|\3|\4)(.)|(?(6)(?!))(?!\1|\2|\3|\4|\5)(.)|(?(7)(?!))(?!\1|\2|\3|\4|\5|\6)(.)|(?(8)(?!))(?!\1|\2|\3|\4|\5|\6|\7)(.)|(?(9)(?!))(?!\1|\2|\3|\4|\5|\6|\7|\8)(.))\S*?){1,9}$)(?=(?:\1|\2|\3|\4|\5|\6|\7|\8|\9)*$)(?(DEFINE)(?<one>(?:(?!\1).)*\1)(?<two>(?:(?!\2).)*\2)(?<three>(?:(?!\3).)*\3)(?<four>(?:(?!\4).)*\4)(?<five>(?:(?!\5).)*\5)(?<six>(?:(?!\6).)*\6)(?<seven>(?:(?!\7).)*\7)(?<eight>(?:(?!\8).)*\8)(?<nine>(?:(?!\9).)*\9))(?:(?(1)(?=(?&one){1}(?!.*\1))(?(2)(?=(?&two){1}(?!.*\2))(?(3)(?=(?&three){1}(?!.*\3))(?(4)(?=(?&four){1}(?!.*\4))(?(5)(?=(?&five){1}(?!.*\5))(?(6)(?=(?&six){1}(?!.*\6))(?(7)(?=(?&seven){1}(?!.*\7))(?(8)(?=(?&eight){1}(?!.*\8))(?(9)(?=(?&nine){1}(?!.*\9)))))))))))|(?(1)(?=(?&one){2}(?!.*\1))(?(2)(?=(?&two){2}(?!.*\2))(?(3)(?=(?&three){2}(?!.*\3))(?(4)(?=(?&four){2}(?!.*\4))(?(5)(?=(?&five){2}(?!.*\5))(?(6)(?=(?&six){2}(?!.*\6))(?(7)(?=(?&seven){2}(?!.*\7))(?(8)(?=(?&eight){2}(?!.*\8))(?(9)(?=(?&nine){2}(?!.*\9)))))))))))|(?(1)(?=(?&one){3}(?!.*\1))(?(2)(?=(?&two){3}(?!.*\2))(?(3)(?=(?&three){3}(?!.*\3))(?(4)(?=(?&four){3}(?!.*\4))(?(5)(?=(?&five){3}(?!.*\5))(?(6)(?=(?&six){3}(?!.*\6))(?(7)(?=(?&seven){3}(?!.*\7))(?(8)(?=(?&eight){3}(?!.*\8))(?(9)(?=(?&nine){3}(?!.*\9)))))))))))|(?(1)(?=(?&one){4}(?!.*\1))(?(2)(?=(?&two){4}(?!.*\2))(?(3)(?=(?&three){4}(?!.*\3))(?(4)(?=(?&four){4}(?!.*\4))(?(5)(?=(?&five){4}(?!.*\5))(?(6)(?=(?&six){4}(?!.*\6))(?(7)(?=(?&seven){4}(?!.*\7))(?(8)(?=(?&eight){4}(?!.*\8))(?(9)(?=(?&nine){4}(?!.*\9)))))))))))|(?(1)(?=(?&one){5}(?!.*\1))(?(2)(?=(?&two){5}(?!.*\2))(?(3)(?=(?&three){5}(?!.*\3))(?(4)(?=(?&four){5}(?!.*\4))(?(5)(?=(?&five){5}(?!.*\5))(?(6)(?=(?&six){5}(?!.*\6))(?(7)(?=(?&seven){5}(?!.*\7))(?(8)(?=(?&eight){5}(?!.*\8))(?(9)(?=(?&nine){5}(?!.*\9)))))))))))|(?(1)(?=(?&one){6}(?!.*\1))(?(2)(?=(?&two){6}(?!.*\2))(?(3)(?=(?&three){6}(?!.*\3))(?(4)(?=(?&four){6}(?!.*\4))(?(5)(?=(?&five){6}(?!.*\5))(?(6)(?=(?&six){6}(?!.*\6))(?(7)(?=(?&seven){6}(?!.*\7))(?(8)(?=(?&eight){6}(?!.*\8))(?(9)(?=(?&nine){6}(?!.*\9)))))))))))|(?(1)(?=(?&one){7}(?!.*\1))(?(2)(?=(?&two){7}(?!.*\2))(?(3)(?=(?&three){7}(?!.*\3))(?(4)(?=(?&four){7}(?!.*\4))(?(5)(?=(?&five){7}(?!.*\5))(?(6)(?=(?&six){7}(?!.*\6))(?(7)(?=(?&seven){7}(?!.*\7))(?(8)(?=(?&eight){7}(?!.*\8))(?(9)(?=(?&nine){7}(?!.*\9)))))))))))|(?(1)(?=(?&one){8}(?!.*\1))(?(2)(?=(?&two){8}(?!.*\2))(?(3)(?=(?&three){8}(?!.*\3))(?(4)(?=(?&four){8}(?!.*\4))(?(5)(?=(?&five){8}(?!.*\5))(?(6)(?=(?&six){8}(?!.*\6))(?(7)(?=(?&seven){8}(?!.*\7))(?(8)(?=(?&eight){8}(?!.*\8))(?(9)(?=(?&nine){8}(?!.*\9)))))))))))|(?(1)(?=(?&one){9}(?!.*\1))(?(2)(?=(?&two){9}(?!.*\2))(?(3)(?=(?&three){9}(?!.*\3))(?(4)(?=(?&four){9}(?!.*\4))(?(5)(?=(?&five){9}(?!.*\5))(?(6)(?=(?&six){9}(?!.*\6))(?(7)(?=(?&seven){9}(?!.*\7))(?(8)(?=(?&eight){9}(?!.*\8))(?(9)(?=(?&nine){9}(?!.*\9)))))))))))).*/'; $str = '------------------------------ match_words = ------------------------------ arraigning nonordered abadbacdcacbdbdc mesosome ananna unendued tromometer caucasus intestines i deed horseshoer happenchance reappear deeded pullup arraigning testes mononymy scintillescent couscous ------------------------------ not_match_words = ------------------------------ edified unreverberating underpass interinsert pilfered nippiness gregarinian deicide nonaristocratic rototiller ozonizing museums backbreaker interradiated antistalling naturalize equitriangular reparticipate ppd miasmas cabbage '; preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0); // Print the entire match result var_dump($matches);

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 PHP, please visit: http://php.net/manual/en/ref.pcre.php