IP正則表達式詳解

一、IP地址的概念

IP地址是指用於在互聯網上標記設備位置的數字標識符。IPv4地址是32位的數字,被分成4個8位二進位數,每個數用十進位表示,中間由點號(.)隔開。例如,192.168.0.1。

二、IP地址的驗證

在實際開發中,IP地址的驗證是一個很常見的需求。下面是一段用正則表達式驗證IPv4地址格式的代碼:

function isValidIP(str) {
  let pattern = /^(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)(\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)){3}$/;
  return pattern.test(str);
}

console.log(isValidIP("192.168.0.1"))  // true
console.log(isValidIP("127.0.0.1"))  // true
console.log(isValidIP("256.256.256.256"))  // false

其中,正則表達式的含義是:

  1. ^ 表示匹配開頭
  2. $ 表示匹配結尾
  3. () 表示分組
  4. | 表示或
  5. \d 表示任意數字

這個正則表達式可以匹配所有的IPv4地址格式,例如:192.168.0.1、127.0.0.1等等。同時,它還排除了一些不合法的IP地址,例如:256.256.256.256。

三、IP地址的提取

在某些場景下,我們需要從一段文本中提取IP地址。下面是一個簡單的例子:

let str = "Client IP: 192.168.0.1 Server IP: 10.0.0.1";
let pattern = /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/g;
let result = str.match(pattern);

console.log(result);  // ["192.168.0.1", "10.0.0.1"]

這個正則表達式可以匹配所有的IPv4地址格式,並且使用g選項實現全局匹配。這樣就可以從一段文本中提取出所有的IP地址。

四、IP地址的替換

在某些場景下,我們需要將文本中的IP地址替換為其他內容。下面是一個簡單的例子:

let str = "Client IP: 192.168.0.1 Server IP: 10.0.0.1";
let pattern = /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/g;
let result = str.replace(pattern, "x.x.x.x");

console.log(result);  // "Client IP: x.x.x.x Server IP: x.x.x.x"

這個正則表達式可以匹配所有的IPv4地址格式,並且使用replace()函數將IP地址替換為”x.x.x.x”。

五、IP地址範圍的匹配

在某些場景下,我們需要匹配某一個IP地址範圍內的所有IP地址。下面是一個簡單的例子:

function getIPs(start, end) {
  let ips = [];
  let pattern = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
  let match1 = start.match(pattern);
  let match2 = end.match(pattern);

  for (let i = match1[1]; i <= match2[1]; i++) {
    for (let j = match1[2]; j <= match2[2]; j++) {
      for (let k = match1[3]; k <= match2[3]; k++) {
        for (let l = match1[4]; l <= match2[4]; l++) {
          ips.push(`${i}.${j}.${k}.${l}`);
        }
      }
    }
  }

  return ips;
}

console.log(getIPs("192.168.0.1", "192.168.0.3"));
// ["192.168.0.1", "192.168.0.2", "192.168.0.3"]

這個函數使用正則表達式將IP地址拆分成4個數字,並且使用4個for循環遍歷所有的IP地址。

六、小結

IP正則表達式在web開發中具有廣泛的應用場景,可以用於驗證IP地址、提取IP地址、替換IP地址等等。通過本文的介紹,我們可以了解到IP地址的驗證方法,以及如何在正則表達式中使用分組、或、全局匹配等特性。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/200827.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-06 11:28
下一篇 2024-12-06 11:28

相關推薦

  • Python正則表達式search()和match()有什麼區別?

    search()和match()都是Python中的正則表達式函數,它們的作用都是在一個字元串中搜索匹配正則表達式的位置,但它們有著不同的使用場景和返回結果。 一、search()…

    編程 2025-04-29
  • Centos7配置靜態ip

    本文將詳細闡述如何在Centos7系統中配置靜態ip。 一、查看網路介面 在配置靜態ip之前,我們首先需要查看系統中的網路介面,以確定我們需要配置的網卡是哪一個。 ifconfig…

    編程 2025-04-29
  • Python檢測IP連通

    Python是一門強大的編程語言,常用於網路開發、數據分析等領域。IP地址是網路通信的基礎,在網路通信中,有時需要檢測IP地址是否連通。下面將從多個方面介紹Python檢測IP連通…

    編程 2025-04-28
  • Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901解析

    本文將對Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901進行詳細解析,並提供相關代碼示例。 一、漏洞背景 Treck TCP/IP Stack是一…

    編程 2025-04-27
  • MySQL正則表達式替換

    MySQL正則表達式替換是指通過正則表達式對MySQL中的字元串進行替換。在文本處理方面,正則表達式是一種強大的工具,可以方便快捷地進行字元串處理和匹配。在MySQL中,可以使用正…

    編程 2025-04-27
  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25

發表回復

登錄後才能評論