C#判断IP地址是否合法函数-使用正则表达式-2个

本文提供两种方法用于验证IP地址的有效性。通过正则表达式检查IP地址格式,并进一步验证每个部分是否符合IPv4地址的规定范围。

public bool IsCorrenctIP(string ip)
{
string pattrn=@"(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])";
if(System.Text.RegularExpressions.Regex.IsMatch(ip,pattrn))
{
return true;
}
else
{
return false;

}
}


public bool IsValidIP(string ip)
{
if (System.Text.RegularExpressions.Regex.IsMatch(ip,"[0-9]{1,3}//.[0-9]{1,3}//.[0-9]{1,3}//.[0-9]{1,3}"))
{
string[] ips = ip.Split('.');
if (ips.Length == 4 || ips.Length == 6)
{
if(System.Int32.Parse(ips[0]) < 256 && System.Int32.Parse(ips[1]) < 256 & System.Int32.Parse(ips[2]) < 256 & System.Int32.Parse(ips[3]) < 256)
return true;
else
return false;
}
else
return false;

}
else
return false;
}

C#中,可借助`Regex`类使用正则表达式处理IP地址,其可进行IP地址的匹配与验证。 ### 正则表达式模式 用于匹配有效IPv4地址正则表达式模式如下: ```plaintext ^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$ ``` 该模式的工作原理为: - `25[0-5]`:匹配250到255之间的数字。 - `2[0-4][0-9]`:匹配200到249之间的数字。 - `[01]?[0-9][0-9]?`:匹配0到199之间的数字。 - `\.`:匹配点号。 - `{3}`:表示前三个八位组的模式重复三次。 - 最后一个八位组直接跟在后面,不需要点号 [^2][^3]。 ### 代码示例 ```csharp using System; using System.Text.RegularExpressions; class Program { static bool IsValidIP(string ipAddress) { string pattern = @"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"; Regex regex = new Regex(pattern); return regex.IsMatch(ipAddress); } static void Main() { string testIP = "192.168.1.1"; if (IsValidIP(testIP)) { Console.WriteLine($"{testIP} 是有效的IP地址。"); } else { Console.WriteLine($"{testIP} 不是有效的IP地址。"); } } } ``` 在上述代码里,`IsValidIP`函数接收一个字符串类型的`ipAddress`参数,借助`Regex`类和正则表达式模式判断IP地址是否有效。在`Main`函数中,对一个示例IP地址进行验证并输出结果 [^2][^3]。 ### `Regex`类常用方法 - `IsMatch`:指示正则表达式在输入字符串中是否找到匹配项。 - `Match`:检索匹配正则表达式模式的一个文本匹配项。 - `Matches`:检索匹配正则表达式模式的所有文本匹配项。 - `Replace`:替换匹配正则表达式模式的文本。 - `Split`:在指定的正则表达式模式定义的位置进行分割字符串 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值