我发现一个正则表达式的例题答案可以改进。IP4的例题
这是讲解的答案,我觉得改进为如下会更好
//校验IP4地址,如192.255.7.42,一共四段,每段数字最大值为255,并且每一段第一位不能为0.
string pattern = @"^(((25[0-5]|2[0-4]\d|1\d\d|[1-9]\d?|0)\.){3}(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d?|0))$";
//string pattern = @"^(((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?))$";
string IP4_1 = "125.436.2.95";
string IP4_2 = "46.089.3.255";
string IP4_3 = "78.0.3.10";
string IP4_4 = "255.255.255.1";
Console.WriteLine(Regex.IsMatch(IP4_1,pattern));
Console.WriteLine(Regex.IsMatch(IP4_2, pattern));
Console.WriteLine(Regex.IsMatch(IP4_3, pattern));
Console.WriteLine(Regex.IsMatch(IP4_4, pattern));
理由[0,1]?\d\d?可包含089,007,000等情形,与功能要求有点不符,所以应该把这个再择一匹配。
希望没有冒犯老师哈!