Regular Expressions 101

Save & Manage Regex

  • Current Version: 1
  • Save & Share
  • Community Library

Flavor

  • PCRE2 (PHP)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java
  • .NET 7.0 (C#)
  • Rust
  • PCRE (Legacy)
  • Regex Flavor Guide

Function

  • Match
  • Substitution
  • List
  • Unit Tests
Sponsors
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
Processing...

Test String

Code Generator

Generated Code

$re = '/"\$(G[ABILNPQ][A-Z]{3}(?:,(?:\d+(?:\.\d+)?|[a-zA-Z]+|))*,\w*\*[\dA-Fa-f]{2})"/m'; $str = 'BOOST_AUTO_TEST_CASE(ValidOneField) { BOOST_CHECK(isSingleSentence("$GPXXX,1*23")); } BOOST_AUTO_TEST_CASE(ValidTwoFields) { BOOST_CHECK(isSingleSentence("$GPXXX,1,testing*69")); } BOOST_AUTO_TEST_CASE(ValidEmptyField) { BOOST_CHECK(isSingleSentence("$GPXXX,*47")); } BOOST_AUTO_TEST_CASE(ValidManyFields) { const std::string commas(1000, \',\'); // 1000 fields BOOST_CHECK(isSingleSentence("$GPXXX" + commas + "*28")); } BOOST_AUTO_TEST_CASE(ValidEdgeLetters) { BOOST_CHECK(isSingleSentence("$GPAAA,1*23")); BOOST_CHECK(isSingleSentence("$GPZZZ,1*23")); } BOOST_AUTO_TEST_CASE(ValidEdgeHexDecimalDigits) { BOOST_CHECK(isSingleSentence("$GPXXX,1*09")); BOOST_CHECK(isSingleSentence("$GPXXX,1*90")); } BOOST_AUTO_TEST_CASE(ValidLowercaseHexCharacters) { BOOST_CHECK(isSingleSentence("$GPXXX,*ce")); } BOOST_AUTO_TEST_CASE(ValidUppercaseHexCharacters) { BOOST_CHECK(isSingleSentence("$GPXXX,*DB")); } BOOST_AUTO_TEST_CASE(ValidHexCharactersMix) { BOOST_CHECK(isSingleSentence("$GPXXX,*b6")); BOOST_CHECK(isSingleSentence("$GPXXX,*3E")); BOOST_CHECK(isSingleSentence("$GPXXX,*cD")); } BOOST_AUTO_TEST_CASE(ValidEdgeHexDigits) { BOOST_CHECK(isSingleSentence("$GPXXX,*af")); BOOST_CHECK(isSingleSentence("$GPXXX,*FA")); } BOOST_AUTO_TEST_CASE(ValidTypicalSentences) { BOOST_CHECK(isSingleSentence("$GPGLL,5425.31,N,107.03,W,82610*69")); BOOST_CHECK(isSingleSentence("$GPWPL,5128.62,N,00027.58,W,EGLL*59")); BOOST_CHECK(isSingleSentence("$GPRMC,113922.000,A,3722.5993,N,00559.2458,W,0.000,0.00,150914,,A*62")); BOOST_CHECK(isSingleSentence("$GPGGA,113922.000,3722.5993,N,00559.2458,W,1,0,,4.0,M,,M,,*40")); BOOST_CHECK(isSingleSentence("$GPMSS,55,27,318.0,100,*66")); } BOOST_AUTO_TEST_CASE(ValidTransmitterOtherThanGP) { // GP: GPS BOOST_CHECK(isSingleSentence("$GLXXX,1*23")); // GL: GLONASS BOOST_CHECK(isSingleSentence("$GAXXX,1*23")); // GA: Galileo BOOST_CHECK(isSingleSentence("$GBXXX,1*23")); // GB: BeiDou BOOST_CHECK(isSingleSentence("$GIXXX,1*23")); // GA: NavIC BOOST_CHECK(isSingleSentence("$GQXXX,1*23")); // GB: QZSS BOOST_CHECK(isSingleSentence("$GNXXX,1*23")); // GN: combined } BOOST_AUTO_TEST_CASE(InvalidMissingSuffix) { BOOST_CHECK(!isSingleSentence("")); BOOST_CHECK(!isSingleSentence("$")); BOOST_CHECK(!isSingleSentence("$G")); BOOST_CHECK(!isSingleSentence("$GP")); BOOST_CHECK(!isSingleSentence("$GPG")); BOOST_CHECK(!isSingleSentence("$GPGL")); BOOST_CHECK(!isSingleSentence("$GPGLL")); BOOST_CHECK(!isSingleSentence("$GPGLL,")); BOOST_CHECK(!isSingleSentence("$GPGLL,*")); BOOST_CHECK(!isSingleSentence("$GPGLL,*1")); } BOOST_AUTO_TEST_CASE(InvalidStartSymbol) { BOOST_CHECK(!isSingleSentence("SGPXXX,*01")); BOOST_CHECK(!isSingleSentence("GPXXX,*01")); } BOOST_AUTO_TEST_CASE(InvalidLettersPrefix) { BOOST_CHECK(!isSingleSentence("$HPXXX,*01")); BOOST_CHECK(!isSingleSentence("$PXXX,*01")); BOOST_CHECK(!isSingleSentence("$GXXX,*01")); BOOST_CHECK(!isSingleSentence("$KLXXX,*01")); BOOST_CHECK(!isSingleSentence("$XXX,*01")); } BOOST_AUTO_TEST_CASE(InvalidFormatCode) { BOOST_CHECK(!isSingleSentence("$GP,*01")); BOOST_CHECK(!isSingleSentence("$GPX,*01")); BOOST_CHECK(!isSingleSentence("$GPXX,*01")); BOOST_CHECK(!isSingleSentence("$GP1XX,*01")); BOOST_CHECK(!isSingleSentence("$GPX%X,*01")); BOOST_CHECK(!isSingleSentence("$GPXX ,*01")); BOOST_CHECK(!isSingleSentence("$GPabc,*01")); } BOOST_AUTO_TEST_CASE(InvalidNoFields) { BOOST_CHECK(!isSingleSentence("$GPXXX*01")); } BOOST_AUTO_TEST_CASE(InvalidReservedCharInField) { BOOST_CHECK(!isSingleSentence("$GPXXX,$77*01")); BOOST_CHECK(!isSingleSentence("$GPXXX,2*3,1*77")); } BOOST_AUTO_TEST_CASE(InvalidChecksumPrefix) { BOOST_CHECK(!isSingleSentence("$GPXX,X77")); BOOST_CHECK(!isSingleSentence("$GPXX,X%77")); } BOOST_AUTO_TEST_CASE(InvalidChecksumTooLong) { BOOST_CHECK(!isSingleSentence("$GPXXX,*012")); } // There are some other ASCII symbols between the 0-9 characters and the A-Z range, // and then some more between A-Z and the a-z range. BOOST_AUTO_TEST_CASE(InvalidHexSymbolsFromMiddleOfASCIIRange) { BOOST_CHECK(!isSingleSentence("$GPXXX,*=3")); BOOST_CHECK(!isSingleSentence("$GPXXX,*4?")); BOOST_CHECK(!isSingleSentence("$GPXXX,*^5")); BOOST_CHECK(!isSingleSentence("$GPXXX,*8-")); } // ASCII symbols taken from the edges just outside the ASCII ranges of valid hex characters. BOOST_AUTO_TEST_CASE(InvalidHexSymbolsASCIIBoundaries) { BOOST_CHECK(!isSingleSentence("$GPXXX,*2:")); BOOST_CHECK(!isSingleSentence("$GPXXX,*@9")); BOOST_CHECK(!isSingleSentence("$GPXXX,*7G")); BOOST_CHECK(!isSingleSentence("$GPXXX,*`8")); BOOST_CHECK(!isSingleSentence("$GPXXX,*1/")); BOOST_CHECK(!isSingleSentence("$GPXXX,*g3")); }'; 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