^start of string
Group 1(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) 0-5one character from 0 (4810) to 5 (5310)
2nd Alternative2[0-4][0-9] 2the literal 2 (5010 / 628 / 3216)
0-4one character from 0 (4810) to 4 (5210)
0-9one character from 0 (4810) to 9 (5710)
3rd Alternative[01]?[0-9][0-9]? ?matches at most one character from the set below:
0the literal 0 (4810 / 608 / 3016)
1the literal 1 (4910 / 618 / 3116)
0-9one character from 0 (4810) to 9 (5710)
?matches at most one character from the set below:
0-9one character from 0 (4810) to 9 (5710)
\.the literal . (4610 / 568 / 2E16)
Group 2(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) 0-5one character from 0 (4810) to 5 (5310)
2nd Alternative2[0-4][0-9] 2the literal 2 (5010 / 628 / 3216)
0-4one character from 0 (4810) to 4 (5210)
0-9one character from 0 (4810) to 9 (5710)
3rd Alternative[01]?[0-9][0-9]? ?matches at most one character from the set below:
0the literal 0 (4810 / 608 / 3016)
1the literal 1 (4910 / 618 / 3116)
0-9one character from 0 (4810) to 9 (5710)
?matches at most one character from the set below:
0-9one character from 0 (4810) to 9 (5710)
\.the literal . (4610 / 568 / 2E16)
Group 3(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) 0-5one character from 0 (4810) to 5 (5310)
2nd Alternative2[0-4][0-9] 2the literal 2 (5010 / 628 / 3216)
0-4one character from 0 (4810) to 4 (5210)
3rd Alternative[01]?[0-9][0-9]? \.the literal . (4610 / 568 / 2E16)
Group 4(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) Non-Capturing Group(?::(\d|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5]))? $end of string, or before its final line terminator