我无法编写正则表达式来验证并对下面的内容进行分组:
答案 0 :(得分:0)
我认为正确范围的验证最好不要在正则表达式中完成,而是在单独的步骤中完成。但是,正则表达式非常适合验证字符串格式并一次性提取端口号。对于格式,我们最多只需要一个冒号,只需要右边的数字(最多5个)。这对应于以下模式字符串:
@"^([^:]+)(?:[:](\d{0,5}))?$"
其中^和$将模式锚定到字符串的开头和结尾。如果在Regex.Match()中使用此模式,则可以在match.Groups [1] .Value中找到主机名,并在match.Groups [2] .Value中找到端口号,以检查它是否不超过65535。
当然,您可以进一步限制主机允许的字符。
答案 1 :(得分:0)
^(?(\ d {1,3} \ d {1,3} \ d {1,3} \ d {1,3})|(\ W +)。)(?:(\ d {0,5}))* $
要使主机/ IP使用match.Group["host"]
并使端口使用match.Group["posrt"]
。