我有IPv4 address的正则表达式
^((0-9|1-9|10-9{2}|20-4|250-5).){3}(0-9|1-9|10-9{2}|20-4|250-5)$
我还有IPv4 CIDR range的正则表达式:
^((0-9|1-9|10-9{2}|20-4|250-5).){3}(0-9|1-9|10-9{2}|20-4|250-5)(/(0-9|1-2|30-2))$
问题是我应该如何用逗号分隔来重复它?
模式:
XXX.XXX,xxx.xxx/XX,XX.XX,XX.XX/X,xx.x测试数据--
123.123.13.11、1.0.0.0、1.0.0.1/3、1.0.0.0/20
我正在使用http://regexr.com/来构建regex,我构建的regex在下面而不起作用--
/(((([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
发布于 2017-04-18 19:33:16
若要用()*
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
发布于 2017-04-18 14:36:44
这就是你要找的吗?
/((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,}
结束。至少一次。
https://stackoverflow.com/questions/43473150
复制相似问题