Regular Expressions 101

Save & Share

Flavor

  • PCRE2 (PHP >=7.3)
  • PCRE (PHP <7.3)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java 8

Function

  • Match
  • Substitution
  • List
  • Unit Tests
/
^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n\?\=]+)
/
gmi
^ asserts position at start of a line
Non-capturing group
(?:https?:\/\/)?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
http
matches the characters http literally (case insensitive)
s
matches the character s with index 11510 (7316 or 1638) literally (case insensitive)
: matches the character : with index 5810 (3A16 or 728) literally (case insensitive)
\/ matches the character / with index 4710 (2F16 or 578) literally (case insensitive)
\/ matches the character / with index 4710 (2F16 or 578) literally (case insensitive)
Non-capturing group
(?:[^@\n]+@)?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
Match a single character not present in the list below
[^@\n]
+ matches the previous token between one and unlimited times, as many times as possible, giving back as needed (greedy)
@ matches the character @ with index 6410 (4016 or 1008) literally (case insensitive)
\n matches a line-feed (newline) character (ASCII 10)
@ matches the character @ with index 6410 (4016 or 1008) literally (case insensitive)
Non-capturing group
(?:www\.)?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
www
matches the characters www literally (case insensitive)
\. matches the character . with index 4610 (2E16 or 568) literally (case insensitive)
1st Capturing Group
([^:\/\n\?\=]+)
Match a single character not present in the list below
[^:\/\n\?\=]
+ matches the previous token between one and unlimited times, as many times as possible, giving back as needed (greedy)
: matches the character : with index 5810 (3A16 or 728) literally (case insensitive)
\/ matches the character / with index 4710 (2F16 or 578) literally (case insensitive)
\n matches a line-feed (newline) character (ASCII 10)
\? matches the character ? with index 6310 (3F16 or 778) literally (case insensitive)
\= matches the character = with index 6110 (3D16 or 758) literally (case insensitive)
Global pattern flags
g modifier: global. All matches (don't return after first match)
m modifier: multi line. Causes ^ and $ to match the begin/end of each line (not only begin/end of string)
i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])
Your regular expression does not match the subject string.

Regular Expression
No Match

/
/
gmi

Test String