
本文共 1238 字,大约阅读时间需要 4 分钟。
Ip地址正则表达式:
@"^((([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5]))$"
简单介绍一下正则(详情百度):
[0-9] 等价 \d 字符串里有 0到9之间的数字字符即可匹配 如a1a
^[0-9] 匹配前缀为以上条件的字符串 如 1aa
[^0-9] 字符串里有除了0-9 以外的字符 即可匹配 如 a
[0-9]$ 匹配后缀为0-9之间的字符串 如 a1
^[0-9]$ 字符串只有一个0-9的字符 即可匹配 如 1
^[0-9]|[0-9]$ 字符串前缀和后缀都是0-9 即可匹配 如 1a9
^代表字符串的开始位置 也就是第一个字符 也可以是一群^()
$代表字符串的结束位置 也就是最后一个字符 也可以是一群()$
分开可匹配前缀后缀 合起来^()$ 匹配整个字符串
优先级(详情百度):| 的优先级是最低的
以下介绍如何一步一步的写出ip地址的正则表达式:
1.判断是否只一个数字字符
pattern = "^[0-9]$";
2.判断是否只是0-99的数字 注意:01!=1
pattern = "(^[0-9]$)|(^[1-9][0-9]$)";
3.判断是否只是0-255之间的数字
pattern = "(^[0-9]$)|(^[1-9][0-9]$)|(^1[0-9][0-9]$)|(^2[0-4][0-9]$)|(^25[0-5]$)";
看着好烦 简化一下 只留下一个 ^$ 注意要加括号 因为 | 的优先级是最低的
pattern = "^(([0-9])|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))$";
同理 2 也可简化为:
pattern = "^(([0-9])|([1-9][0-9]))$";
继续简化:
pattern = @"^[1-9]?\d$";
4.判断 0-255.0-255.0-255.
pattern = @"^(((([1-9]?\d)|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))\.){3})$";
可得注意()括号 {3}表示重复三次 .可匹配任意字符 \.只能匹配. @配合\转义
5.判断ip地址的格式
pattern=@"^(((([1-9]?\d)|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))\.){3}(([1-9]?\d)|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))$";
6.对其简化 由于|的优先级最低 可去掉其周围的)( [0-9]=\d
pattern=@"^((([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5]))$";
发表评论
最新留言
关于作者
