如何验证输入的网段格式?

zt_100094 2008-10-17 09:11:11
在Winform中一个TextBox用于输入网段配置,该如何验证输入的网段格式是否正确呢?
比如:10.1.3.0/8,10.1.3.0/255.0.0.0 多个网段用逗号隔开



如何验证?
...全文
235 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zt_100094 2008-10-17
  • 打赏
  • 举报
回复
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

不能验证如10.1.3.0/8 格式的
nattystyle 2008-10-17
  • 打赏
  • 举报
回复
那就是一个很长的正则...

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
zt_100094 2008-10-17
  • 打赏
  • 举报
回复
我是验证网段 格式如10.1.3.0/255.0.0.0,不是一个IP地址
nealwike 2008-10-17
  • 打赏
  • 举报
回复
用正则表达是:

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
wartim 2008-10-17
  • 打赏
  • 举报
回复
如果带逻辑到话,比如只能输入局域网192.168.1.1 127.0.0.1 。。。。。就更复杂点
nattystyle 2008-10-17
  • 打赏
  • 举报
回复
验证标准的IP地址:

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
zt_100094 2008-10-17
  • 打赏
  • 举报
回复
正则怎么写?
nattystyle 2008-10-17
  • 打赏
  • 举报
回复
嘿嘿哈屁,快使出正则
solomon_jie 2008-10-17
  • 打赏
  • 举报
回复
如果用逗号隔开就把/换成,
solomon_jie 2008-10-17
  • 打赏
  • 举报
回复
string tt = "1.2.3.4/2.0.4.3/5.3.2.333";
string[] arr = tt.Split('/');
string [][]arrAll = new string[arr.Length][];
for (int j = 0; j < arr.Length; j++)
{
arrAll[j] = arr[j].Split('.');
}
这样可以得到一个包含所有字符的多维数组

for (int k = 0; k < arr.Length; k++)
{
for (int co = 0; co < arrAll[k].Length; co++)
{
if (int.Parse(arrAll[k][co]) > 255 || int.Parse(arrAll[k][co]) < 1)
{
Console.Write("wrong");
}
}
}
然后判断每一行数组的每一个值是否在范围内就可以了。

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧