# Matches an IPv4 Address
(?>[0-2][0-5][0-5]|[0-1]\d\d|\d{1,2}) # Match a series of digits (up to 255),
\.                                    # followed by a dot,
(?>[0-2][0-5][0-5]|[0-1]\d\d|\d{1,2}) # followed by another series of digits (up to 255),
\.                                    # followed by a dot,
(?>[0-2][0-5][0-5]|[0-1]\d\d|\d{1,2}) # followed by another series of digits (up to 255),
\.                                    # folowed by a dot,
(?>[0-2][0-5][0-5]|[0-1]\d\d|\d{1,2}) # followed by a final series of digits (up to 255)
(?=\D|$)                              # followed by a non-digit or end of string.

