一个 IPv4 地址
匹配一个 IPv4 地址。两端都锚住了,整个字符串合上才算通过。没有捕获组。
表达式
/^(?:(?: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)$/- 匹配范围
- 整个字符串
- 捕获组
- 0
- 在第一个例子里抓到的部分
- 192.168.0.1
自己试一试
随便输入一段文字,这个式子抓到的部分就会高亮出来。全部在你的浏览器里运行,不会发往任何地方。
192.168.0.1
匹配到 1 处
匹配的例子
- 192.168.0.1
- 255.255.255.255
- 0.0.0.0
不匹配的例子
- 256.1.1.1
- 1.2.3
- 01.2.3.4
同一类的其他式子
^[^\s@]+@[^\s@.]+(?:\.[^\s@.]+)+$一个电子邮件地址^https?://[^\s/$.?#][^\s]*$一个网址^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,}$一个域名^(?:[0-9a-f]{1,4}:){7}[0-9a-f]{1,4}$不省略写全的 IPv6 地址^(?:[0-9a-f]{2}[:-]){5}[0-9a-f]{2}$一个 MAC 地址^(?:6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]?\d{1,4})$一个端口号^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$一个 UUID^#(?:[0-9a-f]{3}|[0-9a-f]{6})$十六进制颜色代码怎么看这一页
- 两端加上 ^ 和 $,整个字符串就必须合上;不加,匹配落在文中任何位置都行。用来做输入校验的式子,一定要加锚。
- 圆括号 ( ) 会把括住的部分捕获下来。只是想分组的话写成 (?: ),后面各组的编号才不会往后挪。
- 这里的每个式子都拿它自己的例子跑过。不过「长得像电子邮件」和「真有这个信箱」始终是两回事。
- 开放式重复层层嵌套(比如 (a+)+)时,遇到某些输入耗时会爆炸式增长。把别人的式子粘进代码前,先找找有没有这种形状。
常见问题
Q. 匹配一个 IPv4 地址的正则表达式是什么?
^(?:(?: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)$。
Q. 哪些字符串能匹配?
像 192.168.0.1 这样的文字能匹配,像 256.1.1.1 这样的不能。
Q. 必须整个字符串都匹配吗?
是的。它被 ^ 和 $ 括住,只有整串合上才算通过。
Q. 抓到的内容怎么用?
没有捕获组,所以只会返回整段匹配(match[0])。只需要其中一部分的话,把那一段用圆括号括起来。