4 == grep {$_<256} /^(\d+)[.](\d+)[.](\d+)[.](\d+)$/
Note that 0 is a valid value (unlike certain Microsoft programers thought). 10.0.0.1 is a perfectly fine IP address, for example. You can "golf" this by swapping \. for [.] but I think that mostly just makes it harder to read.
Also note that you might want to outlaw leading zeros since some C programs will incorrectly interpret 10.011.012.013 as containing 3 octal values and won't allow 10.08.09.10 since "08" and "09" aren't valid octal numbers.
4 == grep {$_<256&&!/^0\d/} /^(\d+)[.](\d+)[.](\d+)[.](\d+)$/
In reply to RE: Matching an IP address
by tye
in thread Matching an IP address
by bort13
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |