![](/img/trans.png)
[英]Validate multiple IP addresses separated by a comma without using regex
[英]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.