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

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Example { public static void main(String[] args) { final String regex = "(\\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)"; final String string = "NEW TIME MATCHING REGEX\n" + "*** REGEX 1: LONELY NUMBERS ***\n" + "12 or 3pm\n" + "4/5CET\n" + "5-6pm\n" + "2,4,5pm\n" + "1,3 or 6pm\n" + "OK. 1,2,3 and 5pm are available\n" + "12pm or 3pm <Shouldn't match \"or\"\n\n" + "#Military times\n" + "1200 or 1300.\n" + "1100,1300 or 1400.\n" + "121212121212121212 <don't match\n\n" + "*** REGEX 2: BASICS ***\n" + "1\n" + "11am or 2pm\n" + "12pm\n" + "12 CET\n" + "12pm CET\n" + "12.32pm\n" + "14 pm\n" + "10.00?\n" + "0.15\n" + "3 : 34\n" + "10 53\n" + "00.15\n" + "at3.00?\n" + "10amis good for me\n" + " 4 oclock\n" + "2o'clock\n" + "2 o clock\n" + "yes,3 am\n" + "12.50 GBP\n" + "USD 4.00\n\n" + "£12.50\n" + "10.93?\n" + "00000\n" + "0000-559\n" + "00001\n\n\n\n\n" + "00001\n" + "00001\n" + "01300\n" + "01700\n" + "from 2 - 6\n" + "there is about 3 of them\n" + "Not sure, maybe 14 apples?\n" + "how about 10 tomorrow? << should fail\n" + "10 tomorrow?\n" + "about £23.00\n\n\n" + "10,11 or 12\n" + "10, 11 or 2?\n" + "10 or 12?\n" + "10 or my place?\n" + "1030 or 1130\n" + "10.30 or 12?\n" + "10 and 11 work\n" + "10, 11, 12th?\n\n" + "1,000\n"; final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE | Pattern.COMMENTS); final Matcher matcher = pattern.matcher(string); while (matcher.find()) { System.out.println("Full match: " + matcher.group(0)); for (int i = 1; i <= matcher.groupCount(); i++) { System.out.println("Group " + i + ": " + matcher.group(i)); } } } }

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 Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html