因为当时的要求是判定10.0.0.1 到 10.255.255.255,原理其实是一样。这里简单回顾一下正则表达式模式的内容:
常见的如:
\d 可以表示0~9的任意一个数字字符而\D是匹配一个非数字字符等价于^ ^是匹配字符串的开头,但放在[]中表示匹配不在[]中的字符
$是匹配字符串的末尾
.是匹配除了换行符任意字符
{}表示重复几次,例如:^a{2,4} $ aa,aaa或aaaa
| 的是或的意思
[]表示匹配括号里面的给出内容像[aeiou]则匹配中括号内的任意一个字母,注意一个中括号只对应一个位置,例如[Pp]ython是匹配 “Python” 或 “python”,而rub[ye]则匹配 “ruby” 或 “rube”。同理[a-z]是匹配任何小写字母,复杂一点的如^ [a-zA-Z_] $是匹配所有的字母和下划线。
\是转义字符,更方便使用在字符串前面加r表示原生字符串解决反斜杠困扰
然后收集了一些可能使用的:
数字:^ [0-9]* $
n位的数字:^ \d{n} $
汉字:^ [ \u4e00-\u9fa5]{0,}$
英文和数字:^ [A-Za-z0-9]+$ 或 ^ [A-Za-z0-9]{4,40}$
Email地址:^\w+([-+.]\w+)
@\w+([-.]\w+)
.\w+([-.]\w+)*$
域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
IP地址:((?: (?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d)) 或 ^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9]).(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d).(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d).(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$
其中:
1\d{2}的意思就是100~199之间的任意一个数字
2[0-4]\d的意思是200~249之间的任意一个数字
25[0-5]的意思是250~255之间的任意一个数字
[1-9]\d的意思是10~99之间的任意一个数字
[1-9])的意思是1~9之间的任意一个数字