Regex for IP address

I tried this code for validating IP address, but it doesn't work...

public static bool IP(string ipStr)
{
    string pattern = @"^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$";
    Regex check = new Regex (pattern);
    bool valid = false;
    if (ipStr == "") {
        valid = false;
    } else {
        valid = check.IsMatch (ipStr, 0);
    }
    return valid;
}   

Any idea what's wrong?


Solution 1:

I would use IPAddress.TryParse static method instead.

IPAddress ip;
bool b = IPAddress.TryParse("1234.12.12.12",out ip);

Solution 2:

for match a valid IP adress use

^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$

instead of

^([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])(\.([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])){3}$

because many regex engine match the first possibility in the OR sequence

you can try your regex engine : 10.48.0.200

test the difference here