^start of line
Group 1([01]?\d\d?|2[0-4]\d|25[0-5]) 1st Alternative[01]?\d\d? ?matches at most one character from the set below:
0the literal 0 (4810 / 608 / 3016)
1the literal 1 (4910 / 618 / 3116)
\da digit
\d?optionally matches a digit
2the literal 2 (5010 / 628 / 3216)
0-4one character from 0 (4810) to 4 (5210)
\da digit
0-5one character from 0 (4810) to 5 (5310)
\.the literal . (4610 / 568 / 2E16)
Group 2([01]?\d\d?|2[0-4]\d|25[0-5]) 1st Alternative[01]?\d\d? ?matches at most one character from the set below:
0the literal 0 (4810 / 608 / 3016)
1the literal 1 (4910 / 618 / 3116)
\da digit
\d?optionally matches a digit
2the literal 2 (5010 / 628 / 3216)
0-4one character from 0 (4810) to 4 (5210)
\da digit
0-5one character from 0 (4810) to 5 (5310)
\.the literal . (4610 / 568 / 2E16)
Group 3([01]?\d\d?|2[0-4]\d|25[0-5]) 1st Alternative[01]?\d\d? ?matches at most one character from the set below:
0the literal 0 (4810 / 608 / 3016)
1the literal 1 (4910 / 618 / 3116)
\da digit
\d?optionally matches a digit
2the literal 2 (5010 / 628 / 3216)
0-4one character from 0 (4810) to 4 (5210)
\da digit
0-5one character from 0 (4810) to 5 (5310)
\.the literal . (4610 / 568 / 2E16)
Group 4([01]?\d\d?|2[0-4]\d|25[0-5]) 1st Alternative[01]?\d\d? ?matches at most one character from the set below:
0the literal 0 (4810 / 608 / 3016)
1the literal 1 (4910 / 618 / 3116)
\da digit
\d?optionally matches a digit
2the literal 2 (5010 / 628 / 3216)
\da digit
:the literal : (5810 / 728 / 3A16)
Group 5((6553[0-5])|(655[0-2][0-9])|(65[0-4][0-9]{2})|(6[0-4][0-9]{3})|([1-5][0-9]{4})|([0-5]{0,5})|([0-9]{1,4})) $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