Ipv4地址主要特征就是4个范围0到255的数,中间以.分割 所以要达成的效果就是(0-255).(0-255).(0-255).(0-255)
首先从匹配0-255开始:
匹配250-255:25[0-5]
匹配200-250:2[0-4]/d
匹配100-199:1/d{2}
匹配10-99:[1-9]/d
匹配0-9:/d
从上面匹配10-99和0-9中的式子可以看出 如果要匹配0-99的话用:[1-9]?/d即可 意思是:前面[1-9]出现0次到1次
所以匹配0-255的话用:
^(?:(25[0-5])|(2[0-4]\d)|((1\d{2})|([1-9]?\d)))$ //注意复制的时候 不要多加
^ $的意思是对应的表示从这里开始^到$部分结束(?:pattern) 表示将pattern部分组合成一个可统一操作的组合项 这里相当于是一个匹配[0-255]的一个组合项
剩下的部分就简单了 首先重复再这个组合项后面加一个.然后重复三次,最后再加一次0-255的判断即可
最后的表达式为: @"^(?:(?:(25[0-5])|(2[0-4]\d)|((1\d{2})|([1-9]?\d)))\.){3}(?:(25[0-5])|(2[0-4]\d)|((1\d{2})|([1-9]?\d)))$";
附上我的代码:
<span style="white-space:pre"> </span>static void Main(string[] args)
{
string ipPattern = "^((25[0-4]|2[0-4]|1\\d{2}|[1-9]?\\d)\\.){3}(25[0-4]|2[0-4]|1\\d{2}|[1-9]?\\d)$";
Regex regex = new Regex(ipPattern);
string ip = "192.168.0.8";
((ip));
();
}