^start of line
\w+any word character, repeated at least once
*matches any number of characters from the set below:
-the literal - (4510 / 558 / 2D16)
.the literal . (4610 / 568 / 2E16)
wthe literal w (11910 / 1678 / 7716) (case sensitive)
@the literal @ (6410 / 1008 / 4016)
Negative Lookahead(?!(?:gmail|yahoo|live)\.com$) Non-Capturing Group(?:gmail|yahoo|live) gmailthe literal text gmail (case sensitive) yahoothe literal text yahoo (case sensitive) livethe literal text live (case sensitive) \.the literal . (4610 / 568 / 2E16)
comthe literal text com (case sensitive) $end of line
\wany word character
*matches any number of characters from the set below:
-the literal - (4510 / 558 / 2D16)
.the literal . (4610 / 568 / 2E16)
\wany word character
\.the literal . (4610 / 568 / 2E16)
\w{2,4}any word character, repeated between 2 and 4 times
$end of line
g modifier: global. Finds all matches instead of stopping after the first
m modifier: multiline. Causes ^ and $ to match the start and end of each line, not only the start and end of the string