簡體   English   中英

帶有或不帶子網的多個IP逗號分隔的正則表達式

[英]regex for multiple IPs comma separated with or without subnet

我有用於IPv4地址的正則表達式:

^(([[0-9] | [1-9] [0-9] | 1 [0-9] {2} | 2 [0-4] [0-9] | 25 [0-5])。 ){3}([0-9] | [1-9] [0-9] | 1 [0-9] {2} | 2 [0-4] [0-9] | 25 [0-5] )$

我有正則表達式的IPv4 CIDR范圍

^(([[0-9] | [1-9] [0-9] | 1 [0-9] {2} | 2 [0-4] [0-9] | 25 [0-5])。 ){3}([0-9] | [1-9] [0-9] | 1 [0-9] {2} | 2 [0-4] [0-9] | 25 [0-5] )(/([0-9] | [1-2] [0-9] | 3 [0-2]))$

問題是我應該如何使用逗號分隔重復

圖案:

XXX.XXX.XXX.XXX,XXX.XXX.XXX.XXX / XX,XX.XX.XX.XX,XX.XX.XX.XX / X,XX.XX.XX.X測試數據-

123.123.13.11、1.0.0.0、1.0.0.1 / 3、1.0.0.0 / 20

我正在使用http://regexr.com/通過正則表達式進行構建,我構建的正則表達式在下面並且無法正常工作-

/(((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))),?)/g

這是您要找的東西嗎?

/((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]?)\.(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]?)(\/(3[0-1]|2[0-9]|1[0-9]|[4-9]))\,?\b){1,}/g

編輯:故障

匹配IP地址:

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

(\\/(30|2[0-9]|1[0-9]|[4-9]))? /后跟4到31之間的數字。

\\,? 逗號。 可選的。

? 空間。 可選的。

\\b字尾。

){1,}捕獲組結束。 全部至少一次。

如果匹配開始和結束,則用()* ex (<regex>)*循環環繞正則表達式,然后將終止符移出循環,例如^(regex)*$

要匹配,或最終的行追加([,\\s]+|$)排除\\s ,如果你不想要的空白, +意味着匹配一個或多個。

這應該適合您匹配整個字符串。 最后刪除*以獲取有效部分; 用^ $包圍以匹配完整字符串。

IPV4 = (([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])
Optional subnet = (\/([4-9]|[12][0-9]|3[0-2]))?
coma or end of line = (,|$)
Putting it together = (((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([4-9]|[12][0-9]|3[0-2]))?)([,\s]+|$))*

或者,最小的組匹配((?!\\\\/)是負的向前看的/ ,並非所有的正則表達式引擎支持負前瞻)

(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]?)\.(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]?)(\/(3[0-1]|2[0-9]|1[0-9]|[4-9]))?(?!\/)\b

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM