要为ip地址编写正则表达式,最基本的就是要了解如何为数字编写正则表达式代码。正则表达式不能将数字理解为数字,而只能将其理解为字符串字符,因此以数字或数学运算形式给出的任何范围都不起作用。正如所有情况一样,首先要为ip编写正则表达式,我们必须分析问题并可视化这种情况下的复杂性,以便编写高效且有效的正则表达式代码以匹配Internet协议地址。


IP地址格式

最初,ip地址的格式似乎令人生畏,因为它包含四个数字范围和三个句点作为分隔符。但是仔细看一看,就会发现实际上这四个数字具有相同的性质,范围从0到255,因此,如果我们为一个数字编写正则表达式,我们可以简单地将其复制并粘贴三遍,这将是IP地址的正则表达式代码。

  • IP地址匹配和验证的正则表达式

首先要看一个IP地址。如上图所示,IP地址的格式为

X . X . X . X

其中X可以是0到255之间的任何数字,并且该值不能大于255。但是对于0,可以使用不同的表示形式,例如0、00、000,此外1可以表示为001,依此类推。我们必须牢记,也可能是001或009,并且代码除了1和9外还必须匹配此格式。对于ip地址的这种复杂结构,我们将使用分而治之的技术。
如果我们可以为X编写正则表达式,那么我们可以轻松地为整个ip地址编写正则表达式,因为此x重复四次,并以点作为分隔符。

  • 如何匹配IP地址X
    在为数字编写正则表达式时,必须记住,正则表达式不知道数字,但会将其作为字符串字符。因此,解决方案[0-255]无效。您能猜出此正则表达式将匹配[0-255]吗?检查它,结果肯定会让您感到惊讶。在ip地址中,我们范围内的最大数字为255,即三个字符长。最小数字为0,即一个字符长。要编写一个匹配该范围0-255的正则表达式,我们会将这个范围分解成较小的范围,可以很容易地对其进行管理以编写正则表达式。

所以细分是

  1. 250 -255
  2. 200-249
  3. 0-199

细分后,我们必须为三个范围而不是单个范围编写正则表达式。

从第一个组件或范围250-255开始,第一个范围250-255的正则表达式代码为/ 25 [0-5] /该代码将匹配从250到255的数字。这里共有六个数字250、251、252 ,253、254、255。现在在这些数字中25很常见,因此我们取25的范围为0-5。

对于第二部分或范围200至249。第一位只有2是通用的,因此我们将写为2,第二位之后的最小值为0,最大值为4,因此范围为[0-4],第三位最小数为0,最大数为9,因此该范围将是[0-9],排在第三位。那么,此范围的完整正则表达式将是/ 2 [0-4] [0-9] /它将匹配200到249之间的任何数字。

同样,对于匹配0-199的代码,其代码应为/ [01]?[0-9] [0-9]?/。此正则表达式还将匹配数字,例如0,00,000,001,009,011,010等,因为问号使该组成为字面量是一个可选实体。

X的正则表达式为(25 [0-5] | 2 [0-4] [0-9] | [01]?[0-9] [0-9]?)

IP地址完整代码的正则表达式:

在为X编写正则表达式之后,现在我们可以重复它以编写ip地址的完整代码。这是例子

\b(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]?)\b

这是ip regex匹配或验证的完整代码。您可以在任何编程语言(例如Perl,java,Python,javascript,Ruby等)中使用它。