使用正則表達(dá)式匹配合法的 IPv4 地址的操作方法
如何使用正則表達(dá)式匹配合法的 IPv4 地址
簡介
IPv4 地址是互聯(lián)網(wǎng)上常用的地址格式,通常由四個(gè)數(shù)字(每個(gè)數(shù)字范圍為 0 到 255)組成,每個(gè)數(shù)字之間用點(diǎn) .
分隔。例如:192.168.0.1
。在某些情況下,我們需要通過編程語言或工具來驗(yàn)證某個(gè)字符串是否為合法的 IPv4 地址。在本文中,我們將學(xué)習(xí)如何使用正則表達(dá)式來實(shí)現(xiàn)這一目標(biāo)。
什么是正則表達(dá)式?
正則表達(dá)式(Regular Expression,簡稱 Regex)是一種用于匹配文本的工具。它能夠按照特定的規(guī)則檢查文本內(nèi)容是否符合要求。正則表達(dá)式廣泛應(yīng)用于文本處理、數(shù)據(jù)驗(yàn)證和解析等任務(wù)。
匹配 IPv4 地址的基本規(guī)則
IPv4 地址有以下幾個(gè)特點(diǎn):
- 每個(gè)地址由四個(gè)數(shù)字組成。
- 每個(gè)數(shù)字在 0 到 255 之間。
- 每個(gè)數(shù)字之間由點(diǎn)
.
分隔。 - 每個(gè)數(shù)字部分不能包含前導(dǎo)零(例如
01
不合法)。
根據(jù)這些規(guī)則,我們可以設(shè)計(jì)一個(gè)正則表達(dá)式來驗(yàn)證 IPv4 地址。
正則表達(dá)式構(gòu)建
我們可以通過以下正則表達(dá)式來匹配合法的 IPv4 地址:
^(?!.*\b0\d)\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
解釋
^
和$
:這兩個(gè)符號分別表示匹配字符串的開始和結(jié)束,確保整個(gè)字符串符合規(guī)定。(?!.*\b0\d)
:這是一個(gè)負(fù)向前瞻(negative lookahead),用于確保地址中沒有任何數(shù)字部分以0
開頭。例如,它會(huì)排除01
、001
等無效格式。((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
:這部分匹配前三個(gè)數(shù)字部分,它確保每個(gè)數(shù)字在 0 到 255 之間,并且每個(gè)數(shù)字部分后面跟一個(gè)點(diǎn)(.
)。25[0-5]
:匹配250
到255
。2[0-4][0-9]
:匹配200
到249
。[01]?[0-9][0-9]?
:匹配0
到199
,同時(shí)支持一位數(shù)或兩位數(shù)的匹配。(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
:這一部分匹配最后一個(gè)數(shù)字部分,確保該部分在 0 到 255 之間。\b
:單詞邊界符,確保數(shù)字部分是獨(dú)立的,并且不會(huì)有其他字符與數(shù)字相連。
合法的 IPv4 地址示例
以下是一些合法的 IPv4 地址,符合上述正則表達(dá)式:
192.168.0.1
255.255.255.255
0.0.0.0
10.0.0.1
172.16.254.3
1.1.1.1
不合法的 IPv4 地址示例
以下是一些不合法的 IPv4 地址,正則表達(dá)式會(huì)排除這些地址:
- 192.168.01.1 —— 前導(dǎo)零(01 不允許)
- 256.256.256.256 —— 數(shù)字超出范圍
- 192.168.1.256 —— 最后一部分 256 超出范圍
- 01.2.3.4 —— 前導(dǎo)零(01 不允許)
- 0.0.0.256 —— 數(shù)字 256 超出范圍
- 300.300.300.300 —— 數(shù)字超出范圍
- 192.168.0 —— 缺少第四部分
- 192.168.0.1. —— 多了一個(gè)點(diǎn)(不能以點(diǎn)結(jié)尾)
- .192.168.0.1 —— 多了一個(gè)點(diǎn)(不能以點(diǎn)開頭)
使用正則表達(dá)式進(jìn)行驗(yàn)證
你可以在編程語言中使用正則表達(dá)式來驗(yàn)證輸入是否為合法的 IPv4 地址。例如,在 Python 中可以這樣實(shí)現(xiàn):
import re def is_valid_ipv4(ip): pattern = r"^(?!.*\b0\d)\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$" return bool(re.match(pattern, ip)) # 測試 print(is_valid_ipv4("192.168.0.1")) # True print(is_valid_ipv4("256.256.256.256")) # False print(is_valid_ipv4("192.168.01.1")) # False
總結(jié)
在本文中,我們學(xué)習(xí)了如何使用正則表達(dá)式來驗(yàn)證 IPv4 地址。通過正則表達(dá)式,我們能夠精確地匹配符合規(guī)則的合法地址,同時(shí)排除掉帶有前導(dǎo)零或超出范圍的非法地址。通過這個(gè)方法,我們可以在各種編程語言中對 IPv4 地址進(jìn)行有效驗(yàn)證,確保網(wǎng)絡(luò)程序的健壯性。
到此這篇關(guān)于如何使用正則表達(dá)式匹配合法的 IPv4 地址的文章就介紹到這了,更多相關(guān)正則表達(dá)式匹配 IPv4 地址內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
正則表達(dá)式實(shí)現(xiàn)字符串每4位后自動(dòng)加空格效果(兩種方法)
本文通過兩種方法給大家介紹了正則表達(dá)式實(shí)現(xiàn)字符串每4位后自動(dòng)加空格效果,需要的朋友可以參考下2018-09-09正則表達(dá)式語法規(guī)則及在Javascript和C#中的使用方法
正則表達(dá)式通常被用來檢索和/或替換那些符合某個(gè)模式的文本內(nèi)容。許多程序設(shè)計(jì)語言都支持利用正則表達(dá)式進(jìn)行字符串操作2013-10-10jQuery如何用正則表達(dá)式驗(yàn)證手機(jī)號、身份證號、中文名稱
這篇文章主要介紹了jQuery如何用正則表達(dá)式驗(yàn)證手機(jī)號、身份證號、中文名稱 的相關(guān)資料,需要的朋友可以參考下2016-06-06正則表達(dá)式不區(qū)分大小寫以及解決思路的探索 .
今天在寫一個(gè)正則表達(dá)式的時(shí)候,因?yàn)樽址写笮懙膯栴},多種大小寫的組合,這時(shí)想到了用正則表達(dá)式2014-06-06JavaScript正則表達(dá)式迷你書之貪婪模式-學(xué)習(xí)筆記
這篇文章主要介紹了JavaScript正則表達(dá)式迷你書之貪婪模式-學(xué)習(xí)筆記,需要的朋友可以參考下2020-02-02