Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regular Expression to match IP address + wildcard

I'm trying to use a RegularexpressionValidator to match an IP address (with possible wildcards) for an IP filtering system.

I'm using the following Regex:

"([0-9]{1,3}\\.|\\*\\.){3}([0-9]{1,3}|\\*){1}"

Which works fine when running it in LINQPad with Regex.Matches, but doesn't seem to work when I'm using the validator.

Does anyone have a suggestion as to either a better Regex or why it would work in test but not in situ?

Cheers, Ed

like image 429
Ed James Avatar asked Jun 08 '10 16:06

Ed James


4 Answers

This: \\.|\\*\\. looks like the dodgy bit. Do this instead:

@"^(([0-9]{1,3}|\*)\.){3}([0-9]{1,3}|\*)$"

And to only accept 0-255 (thanks, apoorv020):

^((([0-9]{1,2})|(1[0-9]{2,2})|(2[0-4][0-9])|(25[0-5])|\*)\.){3}(([0-9]{1,2})|(1[0-9]{2,2})|(2[0-4][0-9])|(25[0-5])|\*)$
like image 65
Callum Rogers Avatar answered Sep 21 '22 02:09

Callum Rogers


asp:RegularExpressionValidator does not require you to double-escape backslashes. You should try:

([0-9]{1,3}\.|\*\.){3}([0-9]{1,3}|\*){1}

like image 34
VeeArr Avatar answered Sep 20 '22 02:09

VeeArr


[0-9]{1,3} would allow IP addresses of the form 999.999.999.999 . Your IP address range should allow only 0-255.
Replace all occurences of [0-9]{1,3} with ([0-9]{1,2})|(1[0-9]{2,2})|(2[0-4][0-9])|(25[0-5])
This does seem very complicated to me, and probably there are better ways of doing this, but it seems correct at first glance.

like image 28
apoorv020 Avatar answered Sep 20 '22 02:09

apoorv020


How about putting start and end string characters on the expression

^([0-9]{1,3}\\.|\\*\\.){3}([0-9]{1,3}|\\*){1}$
like image 36
Mike Avatar answered Sep 19 '22 02:09

Mike