javascript regular expression to check for IP addresses

Tags: , , ,



I have several ip addresses like:

  1. 115.42.150.37
  2. 115.42.150.38
  3. 115.42.150.50

What type of regular expression should I write if I want to search for the all the 3 ip addresses? Eg, if I do 115.42.150.* (I will be able to search for all 3 ip addresses)

What I can do now is something like: /[0-9]{1-3}.[0-9]{1-3}.[0-9]{1-3}.[0-9]{1-3}/ but it can’t seems to work well.

Thanks.

Answer

The regex you’ve got already has several problems:

Firstly, it contains dots. In regex, a dot means “match any character”, where you need to match just an actual dot. For this, you need to escape it, so put a back-slash in front of the dots.

Secondly, but you’re matching any three digits in each section. This means you’ll match any number between 0 and 999, which obviously contains a lot of invalid IP address numbers.

This can be solved by making the number matching more complex; there are other answers on this site which explain how to do that, but frankly it’s not worth the effort — in my opinion, you’d be much better off splitting the string by the dots, and then just validating the four blocks as numeric integer ranges — ie:

if(block >= 0 && block <= 255) {....}

Hope that helps.



Source: stackoverflow