私有 IPv4 网段
匹配私有 IPv4 网段。两端都锚住了,整个字符串合上才算通过。捕获组有 2 个。
表达式
/^(10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2\d|3[01])\.\d{1,3}\.\d{1,3})$/- 匹配范围
- 整个字符串
- 捕获组
- 2
- 在第一个例子里抓到的部分
- 10.0.0.1
自己试一试
随便输入一段文字,这个式子抓到的部分就会高亮出来。全部在你的浏览器里运行,不会发往任何地方。
10.0.0.1
匹配到 1 处
匹配的例子
- 10.0.0.1
- 192.168.1.1
- 172.20.5.4
不匹配的例子
- 8.8.8.8
- 172.15.0.1
- 172.32.0.1
同一类的其他式子
^([0-9a-fA-F]{1,4}(:[0-9a-fA-F]{1,4})*)?::([0-9a-fA-F]{1,4}(:[0-9a-fA-F]{1,4})*)?$缩写的 IPv6 地址^\d{3}-\d{2}-\d{5}$韩国营业执照号码^[a-z]+\/[a-zA-Z0-9][a-zA-Z0-9.+-]*$MIME 类型^data:[a-z]+\/[a-z0-9.+-]+;base64,[A-Za-z0-9+/]+=*$base64 形式的 data: URI^(\S+\s+){4}\S+$五段式 cron 表达式^[A-Za-z]:\\.*$Windows 盘符路径^[\^~]?\d+\.\d+\.\d+$带 ^ 或 ~ 的版本范围^[A-Z][a-zA-Z0-9]*$帕斯卡命名怎么看这一页
- 两端加上 ^ 和 $,整个字符串就必须合上;不加,匹配落在文中任何位置都行。用来做输入校验的式子,一定要加锚。
- 圆括号 ( ) 会把括住的部分捕获下来。只是想分组的话写成 (?: ),后面各组的编号才不会往后挪。
- 这里的每个式子都拿它自己的例子跑过。不过「长得像电子邮件」和「真有这个信箱」始终是两回事。
- 开放式重复层层嵌套(比如 (a+)+)时,遇到某些输入耗时会爆炸式增长。把别人的式子粘进代码前,先找找有没有这种形状。
常见问题
Q. 匹配私有 IPv4 网段的正则表达式是什么?
^(10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2\d|3[01])\.\d{1,3}\.\d{1,3})$。
Q. 哪些字符串能匹配?
像 10.0.0.1 这样的文字能匹配,像 8.8.8.8 这样的不能。
Q. 必须整个字符串都匹配吗?
是的。它被 ^ 和 $ 括住,只有整串合上才算通过。
Q. 抓到的内容怎么用?
有 2 个捕获组,可以从 match[1] 开始依次取出。