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

r"
"
gmix

Test String

Code Generator

Generated Code

// include the latest version of the regex crate in your Cargo.toml extern crate regex; use regex::Regex; fn main() { let regex = Regex::new(r"(?mix)(\b(\b(?:times|some time|any time))\b|\b(1[0-9]th)\b|\b([2-3]0th)\b|\b([2-3]?1st)\b|\b(2?2nd)\b|\b(2?3rd)\b|\b(2?[4-9]th)\b|\b((?:(?:1[0-9]|2[0-4]|0?[0-9])(?:(?:[ ]?(?:or|[,/-]|to|and)[ ]?))){0,3}((?:1[0-9]|2[0-4]|0?[0-9]))((?:[ ]?[\:\.][ ]?)([0-5][0-9])|(?:[ ]?[ap]m|[ ]?o\'?[ ]?clock)|(?:[ ]?(?:PS?T|GMT|∆USA|∆US|ET|BST|∆UK|UK[ ]?[Tt]ime|[Ee]astern[ ]?[Tt]ime|[Pp]acific[ ]?[Tt]ime|[Cc]entral[ ]?[Tt]ime|∆UTC|ACDT|ACST|ACT|ACT|ADT|AEDT|AEST|AFT|AKDT|AKST|AMST|AMT|AMT|ART|AST|AST|AWDT|AWST|AZOST|AZT|BDT|BDT|BIOT|BRST|BRT|BST|BST|BST|BTT|CCT|CDT|CDT|CEDT|CEST|CET|CHADT|CHAST|CHOT|ChST|CHUT|CIST|CIT|CKT|CLST|CLT|COT|CST|CST|CST|CST|CST|CT|CVT|CWST|CXT|DAVT|DDUT|DFT|EASST|ECT|ECT|EDT|EEDT|EEST|EET|EGST|EGT|EIT|EST|EST|FET|FJT|FKST|FKST|FKT|FNT|GALT|GAMT|GFT|GILT|GIT|GMT|GST|GST|GYT|HADT|HAEC|HAST|HKT|HMT|HOVT|HST|IBST|ICT|IDT|IRDT|IRKT|IRST|IST|IST|IST|JST|KGT|KOST|KRAT|KST|LHST|LHST|LINT|MAGT|MART|MAWT|MDT|MET|MEST|MHT|MIST|MMT|MSK|MST|MST|MST|MUT|MVT|MYT|NCT|NDT|NFT|NPT|NST|NT|NUT|NZDT|NZST|OMST|ORAT|PDT|PETT|PGT|PHOT|PKT|PMDT|PMST|PONT|PST|PST|PYST|PYT|RET|ROTT|SAKT|SAMT|SAST|SBT|SCT|SGT|SLST|SRET|SRT|SST|SST|SYOT|TAHT|THA|TFT|TJT|TKT|TLT|TMT|TOT|TVT|ULAT|USZ1|UYST|UYT|UZT|VET|VLAT|VOLT|VOST|VUT|WAKT|WAST|WAT|WEDT|WEST|WET|WST|YAKT)\b)){1,3})\b|\b(january)\b|\b(jan\b)\b|\b(february)\b|\b(feb\b)\b|\b(march)\b|\b(mar\b)\b|\b(april)\b|\b(apr\b)\b|\b(may\b)\b|\b(june)\b|\b(jun\b)\b|\b(july)\b|\b(jul\b)\b|\b(august)\b|\b(aug\b)\b|\b(september)\b|\b(sept?)\b|\b(october)\b|\b(oct\b)\b|\b(november)\b|\b(nov\b)\b|\b(december)\b|\b(dec\b)\b|\b(\bnext\b)\b|\b(tomorr?ow (?:afternoon|morning|\bmorn\b|evening|\beve\b|midd?ay))\b|\b(\bfew\b)\b|\b(\bafter\b)\b|\b(last (?:not Last [week] of [month|year]))\b|\b([Mm]onday)\b|\b(year)\b|\b(afternoon)\b|\b(hours?)\b|\b(\bnoon\b)\b|\b(lunch)\b|\b(weekend)\b|\b(seconds)\b|\b(meeting)\b|\b(\bfirst\b)\b|\b(\bseveral\b)\b|\b(\bbefore\b)\b|\b(the other [wee|day|month|year])\b|\b([Mm]on\b)\b|\b(month)\b|\b(morning)\b|\b(minutes?)\b|\b(midnight)\b|\b(brunch)\b|\b(today)\b|\b(\bsecs\b)\b|\b(call)\b|\b(\bsecond\b)\b|\b(\bcouple\b)\b|\b(\bbetween\b)\b|\b(^^Regex less opening condition)\b|\b([Tt]uesday)\b|\b(\bweek\b)\b|\b(\bmorn\b)\b|\b(\bdays\b)\b|\b(midday)\b|\b(dinner)\b|\b(∆now)\b|\b(minutes)\b|\b(phone call)\b|\b(\bthird\b)\b|\b(\bsome\b)\b|\b(in ?-? ?between)\b|\b([Tt]ue\b)\b|\b(\bday\b)\b|\b(evening)\b|\b(fou?rtnights)\b|\b(breakfast)\b|\b(tomorrow)\b|\b(\bmins\b)\b|\b(conference call)\b|\b(\bfourth\b)\b|\b(\bmany\b)\b|\b([Ww]ednesday)\b|\b(fou?rtnight)\b|\b(\beve\b)\b|\b(years)\b|\b(\bmns\b)\b|\b(coffee)\b|\b(following)\b|\b(\bin a)\b|\b([Ww]eds?)\b|\b(days∆)\b|\b(midd?ay)\b|\b(months)\b|\b(hours)\b|\b(\bcoming\b)\b|\b([Tt]hursday)\b|\b(weeks)\b|\b(\bhrs\b)\b|\b(\blast\b)\b|\b([1-9][0-9])\b|\b([Tt]hur)\b|\b(\bthis\b)\b|\b([Ff]riday)\b|\b([Ff]ri\b)\b|\b([Ss]aturday)\b|\b(meet)\b|\b([Ss]at\b)\b|\b(phone)\b|\b([Ss]unday)\b|\b([Ss]un\b)\b|\b(Enhanced Version For Martin. +ve Look Behinds and limited scope for the number of minutes in the secon number. 5,10,15,20,30,45 mins past the hour)\b|\b(Enhanced Version For Martin. +ve Look Behinds)\b|\b(\bPS?T\b)\b|\b(\bGMT\b)\b|\b(\b∆USA\b)\b|\b(\b∆US\b)\b|\b(\bET\b)\b|\b(\bBST\b)\b|\b(\b∆UK\b)\b|\b(\bUK ?[Tt]ime\b)\b|\b(\b[Ee]astern [Tt]ime\b)\b|\b(\b[Pp]acific [Tt]ime\b)\b|\b(\b[Cc]entral [Tt]ime\b)\b|\b(\bACDT\b)\b|\b(\bACST\b)\b|\b(\bACT\b)\b|\b(\bADT\b)\b|\b(\bAEDT\b)\b|\b(\bAEST\b)\b|\b(\bAFT\b)\b|\b(\bAKDT\b)\b|\b(\bAKST\b)\b|\b(\bAMST\b)\b|\b(\bAMT\b)\b|\b(\bART\b)\b|\b(\bAST\b)\b|\b(\bAWDT\b)\b|\b(\bAWST\b)\b|\b(\bAZOST\b)\b|\b(\bAZT\b)\b|\b(\bBDT\b)\b|\b(\bBIOT\b)\b|\b(\bBRST\b)\b|\b(\bBRT\b)\b|\b(\bBTT\b)\b|\b(\bCCT\b)\b|\b(\bCDT\b)\b|\b(\bCEDT\b)\b|\b(\bCEST\b)\b|\b(\bCET\b)\b|\b(\bCHADT\b)\b|\b(\bCHAST\b)\b|\b(\bCHOT\b)\b|\b(\bChST\b)\b|\b(\bCHUT\b)\b|\b(\bCIST\b)\b|\b(\bCIT\b)\b|\b(\bCKT\b)\b|\b(\bCLST\b)\b|\b(\bCLT\b)\b|\b(\bCOT\b)\b|\b(\bCST\b)\b|\b(\bCT\b)\b|\b(\bCVT\b)\b|\b(\bCWST\b)\b|\b(\bCXT\b)\b|\b(\bDAVT\b)\b|\b(\bDDUT\b)\b|\b(\bDFT\b)\b|\b(\bEASST\b)\b|\b(\bECT\b)\b|\b(\bEDT\b)\b|\b(\bEEDT\b)\b|\b(\bEEST\b)\b|\b(\bEET\b)\b|\b(\bEGST\b)\b|\b(\bEGT\b)\b|\b(\bEIT\b)\b|\b(\bEST\b)\b|\b(\bFET\b)\b|\b(\bFJT\b)\b|\b(\bFKST\b)\b|\b(\bFKT\b)\b|\b(\bFNT\b)\b|\b(\bGALT\b)\b|\b(\bGAMT\b)\b|\b(\bGFT\b)\b|\b(\bGILT\b)\b|\b(\bGIT\b)\b|\b(\bGST\b)\b|\b(\bGYT\b)\b|\b(\bHADT\b)\b|\b(\bHAEC\b)\b|\b(\bHAST\b)\b|\b(\bHKT\b)\b|\b(\bHMT\b)\b|\b(\bHOVT\b)\b|\b(\bHST\b)\b|\b(\bIBST\b)\b|\b(\bICT\b)\b|\b(\bIDT\b)\b|\b(\bIRDT\b)\b|\b(\bIRKT\b)\b|\b(\bIRST\b)\b|\b(\bIST\b)\b|\b(\bJST\b)\b|\b(\bKGT\b)\b|\b(\bKOST\b)\b|\b(\bKRAT\b)\b|\b(\bKST\b)\b|\b(\bLHST\b)\b|\b(\bLINT\b)\b|\b(\bMAGT\b)\b|\b(\bMART\b)\b|\b(\bMAWT\b)\b|\b(\bMDT\b)\b|\b(\bMET\b)\b|\b(\bMEST\b)\b|\b(\bMHT\b)\b|\b(\bMIST\b)\b|\b(\bMMT\b)\b|\b(\bMSK\b)\b|\b(\bMST\b)\b|\b(\bMUT\b)\b|\b(\bMVT\b)\b|\b(\bMYT\b)\b|\b(\bNCT\b)\b|\b(\bNDT\b)\b|\b(\bNFT\b)\b|\b(\bNPT\b)\b|\b(\bNST\b)\b|\b(\bNT\b)\b|\b(\bNUT\b)\b|\b(\bNZDT\b)\b|\b(\bNZST\b)\b|\b(\bOMST\b)\b|\b(\bORAT\b)\b|\b(\bPDT\b)\b|\b(\bPETT\b)\b|\b(\bPGT\b)\b|\b(\bPHOT\b)\b|\b(\bPKT\b)\b|\b(\bPMDT\b)\b|\b(\bPMST\b)\b|\b(\bPONT\b)\b|\b(\bPST\b)\b|\b(\bPYST\b)\b|\b(\bPYT\b)\b|\b(\bRET\b)\b|\b(\bROTT\b)\b|\b(\bSAKT\b)\b|\b(\bSAMT\b)\b|\b(\bSAST\b)\b|\b(\bSBT\b)\b|\b(\bSCT\b)\b|\b(\bSGT\b)\b|\b(\bSLST\b)\b|\b(\bSRET\b)\b|\b(\bSRT\b)\b|\b(\bSST\b)\b|\b(\bSYOT\b)\b|\b(\bTAHT\b)\b|\b(\bTHA\b)\b|\b(\bTFT\b)\b|\b(\bTJT\b)\b|\b(\bTKT\b)\b|\b(\bTLT\b)\b|\b(\bTMT\b)\b|\b(\bTOT\b)\b|\b(\bTVT\b)\b|\b(\bUCT\b)\b|\b(\bULAT\b)\b|\b(\bUSZ1\b)\b|\b(\bUTC\b)\b|\b(\bUYST\b)\b|\b(\bUYT\b)\b|\b(\bUZT\b)\b|\b(\bVET\b)\b|\b(\bVLAT\b)\b|\b(\bVOLT\b)\b|\b(\bVOST\b)\b|\b(\bVUT\b)\b|\b(\bWAKT\b)\b|\b(\bWAST\b)\b|\b(\bWAT\b)\b|\b(\bWEDT\b)\b|\b(\bWEST\b)\b|\b(\bWET\b)\b|\b(\bWST\b)\b|\b(\bYAKT\b)\b|\b(\bUK\b)\b|\b(\bUS\b)\b|\b(\bPT\b)\b|\b(\bUK Time\b)\b|\b(\bUKTime\b)\b|\b(\bUK time\b)\b|\b(\bUKtime\b)\b|\b(\bEastern Time\b)\b|\b(\bEastern time\b)\b|\b(\beastern time\b)\b|\b(\bPacific Time\b)\b|\b(\bPacific time\b)\b|\b(\bpacific time\b)\b|\b(\bCentral Time\b)\b|\b(\bCentral time\b)\b|\b(\bcentral time\b)\b|\b(\bEasternTime\b)\b|\b(\bEasterntime\b)\b|\b(Spanish time)\b|\b(Atlanta time)\b)").unwrap(); let string = "NEW TIME MATCHING REGEX *** REGEX 1: LONELY NUMBERS *** 12 or 3pm 4/5CET 5-6pm 2,4,5pm 1,3 or 6pm OK. 1,2,3 and 5pm are available 12pm or 3pm <Shouldn't match \"or\" #Military times 1200 or 1300. 1100,1300 or 1400. 121212121212121212 <don't match *** REGEX 2: BASICS *** 1 11am or 2pm 12pm 12 CET 12pm CET 12.32pm 14 pm 10.00? 0.15 3 : 34 10 53 00.15 at3.00? 10amis good for me 4 oclock 2o'clock 2 o clock yes,3 am 12.50 GBP USD 4.00 £12.50 10.93? 00000 0000-559 00001 00001 00001 01300 01700 from 2 - 6 there is about 3 of them Not sure, maybe 14 apples? how about 10 tomorrow? << should fail 10 tomorrow? about £23.00 10,11 or 12 10, 11 or 2? 10 or 12? 10 or my place? 1030 or 1130 10.30 or 12? 10 and 11 work 10, 11, 12th? 1,000 "; // result will be an iterator over tuples containing the start and end indices for each match in the string let result = regex.captures_iter(string); for mat in result { println!("{:?}", mat); } }

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 Rust, please visit: https://docs.rs/regex/latest/regex/