2017-04-18 39 views
0

我有IPv4地址正則表達式分離:正則表達式多個IP逗號具有或不具有子網

^(([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/通過正則表達式來打造, 我所要建造的正則表達式是低於而不是working--

/(((([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 
+1

在逗號分隔,循環並使用您已擁有的正則表達式。 –

+0

這是不行的 - /((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] |。[0-4] [O- 9] | [01] [0-9] [0-9])\(25 [0-5] |?2 [0-4] [0-9] | [01] [0-9] [0-9]))/克?; – user7353226

+0

http://stackoverflow.com/a/23483979/797495 –

回答

0

要循環環繞的正則表達式與()* EX(正則表達式)*如果匹配的開始和結束,然後移動終止退出循環一樣^(正則表達式)* $

要匹配,或最終的行追加( [,\ 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 
1

這是你在找什麼?

/((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]))?/後跟一個數字和31之間逗號4

\,?。可選的。

?空間。可選的。

\b單詞結尾。

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

+0

但它與子網不匹配。斜線(/)後應該只允許數字。 – user7353226

+0

你說得對。修改它以支持子網掩碼。你在找什麼? –

+0

示例未驗證151.140.0.0/16,165.130.0.0/16,50.207.27.182/32,192.8.0.0/16,207.11.0.0/17,50.202.130.24/29 – user7353226

相關問題