C#中验证IP地址的正则表达式是什么

2025-01-06 13:05:54
推荐回答(5个)
回答1:

((?:(?: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))))

具体如下:
1. 250-255:特点:三位数,百位是2,十位是5,个位是0~5,用正则表达式可以写成:25[0-5]
2. 200-249:特点:三位数,百位是2,十位是0~4,个位是0~9,用正则表达式可以写成:2[0-4]\d
3. 0-99的正则表达式可以合写为[1-9]?\d,那么0-199用正则表达式就可以写成(1\d{2})|([1-9]?\d),
4. 这样0~255的正则表达式就可以写成(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))

所以最终为 0-255的表达式重复三次{3}再跟一次没点的

回答2:

加上开始与结束标志之后,再考虑前后出现空格的问题,最后形成表达式

var re = /^\s*((\d{1,10})|(\d{1,8}.\d)|(\d{1,7}.\d{1,2}))\s*$/;

这是我用11个的测试用例,如果没有理解错楼主的意思的话,前7个应该为true,后4个应该为false,全部通过测试。

alert(re.test("12"));
alert(re.test(" 12 "));
alert(re.test("1234567890"));
alert(re.test("12.3"));
alert(re.test(" 12.34"));
alert(re.test("12345678.9 "));
alert(re.test("1234567.89"));

alert(re.test("123456789012"));
alert(re.test("1234567890.1"));
alert(re.test("1234567890.12"));
alert(re.test("1234567890.123"));

另外,如果要考虑第一个数字不能为零的情况,则还需要再修改一下,不知道楼主需不需要,我就不做无用功了。

回答3:

[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}

回答4:

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

回答5:

Regex.IsMatch(str, @"\b(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b");