多个IP的正则表达式用逗号分隔或不用子网

时间:2017-04-18 13:09:30

标签: javascript angularjs regex validation angularjs-ng-pattern

我有 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 / XXX,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

2 个答案:

答案 0 :(得分: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]))? /后跟4到31之间的数字。

\,?逗号。可选的。

?空间。可选的。

\b结尾。

){1,}捕获组结束。至少一次。

答案 1 :(得分:1)

如果匹配起始和结束,则使用()* ex (<regex>)*循环使用环绕正则表达式,然后将终止符移出循环,如^(regex)*$

要匹配,或行尾添加([,\s]+|$),请排除\s,如果您不想要空格,+表示匹配一个或多个。< / p>

这应该适合您匹配整个字符串。有效部分最后删除*;使用^ $环绕以匹配完整字符串。

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