^start of line
Negative Lookahead(?!(?:[^\d\n]*\d){5}) Non-Capturing Group(?:[^\d\n]*\d){5} {5}repeats the group contents below exactly 5 times:
Negated Character Class[^\d\n]* *matches any number of characters outside the set below:
\da digit
\na line-feed (newline) character (ASCII 10)
\da digit
*the literal (3210 / 408 / 2016) , repeated any number of times
\d+a digit, repeated at least once
Non-Capturing Group(?:\.\d{1,2})? ?repeats the group contents below at most once:
\.the literal . (4610 / 568 / 2E16)
\d{1,2}a digit, repeated between 1 and 2 times
*the literal (3210 / 408 / 2016) , repeated any number of times
Nthe literal N (7810 / 1168 / 4E16) (case sensitive)
Sthe literal S (8310 / 1238 / 5316) (case sensitive)
nthe literal n (11010 / 1568 / 6E16) (case sensitive)
sthe literal s (11510 / 1638 / 7316) (case sensitive)
$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