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

/
/
gmux

Test String

Code Generator

Generated Code

#include <StringConstants.au3> ; to declare the Constants of StringRegExp #include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate Local $sRegex = "(?mux)^( # Match only leap years" & @CRLF & _ " \d\d[2468][048] # multiple of four but not 100" & @CRLF & _ " |\d\d[13579][26] # ..." & @CRLF & _ " |\d\d0[48] # ..." & @CRLF & _ " |[02468][048]00 # multiple of four hundred" & @CRLF & _ " |[13579][26]00 # ..." & @CRLF & _ ")$" Local $sString = "^(" & @CRLF & _ "\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]| # multiple of four but not 100" & @CRLF & _ " [02468][048]00 |[13579][26]00 # multiple of four hundred" & @CRLF & _ ")" & @CRLF & _ "" & @CRLF & _ "" & @CRLF & _ "// accept: multiple of four ()" & @CRLF & _ "0004" & @CRLF & _ "0008" & @CRLF & _ "0012" & @CRLF & _ "0016" & @CRLF & _ "0020" & @CRLF & _ "0024" & @CRLF & _ "0028" & @CRLF & _ "0032" & @CRLF & _ "0036" & @CRLF & _ "0040" & @CRLF & _ "0044" & @CRLF & _ "0048" & @CRLF & _ "0052" & @CRLF & _ "0056" & @CRLF & _ "0060" & @CRLF & _ "0064" & @CRLF & _ "0068" & @CRLF & _ "0072" & @CRLF & _ "0076" & @CRLF & _ "0080" & @CRLF & _ "0084" & @CRLF & _ "0088" & @CRLF & _ "0092" & @CRLF & _ "0096" & @CRLF & _ "1560" & @CRLF & _ "2004" & @CRLF & _ "2008" & @CRLF & _ "2012" & @CRLF & _ "2016" & @CRLF & _ "2020" & @CRLF & _ "2024" & @CRLF & _ "2028" & @CRLF & _ "2032" & @CRLF & _ "2036" & @CRLF & _ "2040" & @CRLF & _ "2044" & @CRLF & _ "9996" & @CRLF & _ "// accept: Multiple of 400" & @CRLF & _ "0000" & @CRLF & _ "0400" & @CRLF & _ "0800" & @CRLF & _ "1200" & @CRLF & _ "1600" & @CRLF & _ "2000" & @CRLF & _ "2400" & @CRLF & _ "2800" & @CRLF & _ "3200" & @CRLF & _ "3600" & @CRLF & _ "4000" & @CRLF & _ "4400" & @CRLF & _ "4800" & @CRLF & _ "5200" & @CRLF & _ "5600" & @CRLF & _ "6000" & @CRLF & _ "6400" & @CRLF & _ "6800" & @CRLF & _ "7200" & @CRLF & _ "7600" & @CRLF & _ "8000" & @CRLF & _ "8400" & @CRLF & _ "8800" & @CRLF & _ "9200" & @CRLF & _ "9600" & @CRLF & _ "// REJECT: Not a multiple of four" & @CRLF & _ "0101" & @CRLF & _ "0102" & @CRLF & _ "0103" & @CRLF & _ "1537" & @CRLF & _ "1538" & @CRLF & _ "2001" & @CRLF & _ "2002" & @CRLF & _ "2003" & @CRLF & _ "2021" & @CRLF & _ "2022" & @CRLF & _ "2023" & @CRLF & _ "2025" & @CRLF & _ "2026" & @CRLF & _ "2027" & @CRLF & _ "2029" & @CRLF & _ "2030" & @CRLF & _ "2031" & @CRLF & _ "2033" & @CRLF & _ "2034" & @CRLF & _ "2035" & @CRLF & _ "2037" & @CRLF & _ "2038" & @CRLF & _ "2039" & @CRLF & _ "2041" & @CRLF & _ "2042" & @CRLF & _ "2043" & @CRLF & _ "9997" & @CRLF & _ "9998" & @CRLF & _ "9999" & @CRLF & _ "// REJECT: Multiple of 100 but not 400" & @CRLF & _ "0100" & @CRLF & _ "0200" & @CRLF & _ "0300" & @CRLF & _ "0500" & @CRLF & _ "0600" & @CRLF & _ "0700" & @CRLF & _ "0900" & @CRLF & _ "1000" & @CRLF & _ "1100" & @CRLF & _ "1500" & @CRLF & _ "2100" & @CRLF & _ "2200" & @CRLF & _ "2300" & @CRLF & _ "2500" & @CRLF & _ "2600" & @CRLF & _ "2700" & @CRLF & _ "2900" & @CRLF & _ "3000" & @CRLF & _ "3100" & @CRLF & _ "3300" & @CRLF & _ "3400" & @CRLF & _ "3500" & @CRLF & _ "3700" & @CRLF & _ "// REJECT: Negative dates not accepted (malformed)" & @CRLF & _ "-2000" & @CRLF & _ "-0400" & @CRLF & _ "-0100" & @CRLF & _ "-0004" & @CRLF & _ "// REJECT: Out of range date per RFC 3339" & @CRLF & _ "10000" & @CRLF & _ "" Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH) Local $aFullArray[0] For $i = 0 To UBound($aArray) -1 _ArrayConcatenate($aFullArray, $aArray[$i]) Next $aArray = $aFullArray ; Present the entire match result _ArrayDisplay($aArray, "Result")

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 AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm