正则表达式·一个 UUID

一个 UUID

匹配一个 UUID。两端都锚住了,整个字符串合上才算通过。没有捕获组。

表达式
/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i
匹配范围
整个字符串
捕获组
0
标志
i · 不分大小写
在第一个例子里抓到的部分
123e4567-e89b-12d3-a456-426614174000

自己试一试

随便输入一段文字,这个式子抓到的部分就会高亮出来。全部在你的浏览器里运行,不会发往任何地方。

123e4567-e89b-12d3-a456-426614174000

匹配到 1 处

匹配的例子

  • 123e4567-e89b-12d3-a456-426614174000

不匹配的例子

  • 123e4567-e89b-12d3-a456
  • zzze4567-e89b-12d3-a456-426614174000

同一类的其他式子

怎么看这一页

  • 两端加上 ^ 和 $,整个字符串就必须合上;不加,匹配落在文中任何位置都行。用来做输入校验的式子,一定要加锚。
  • 圆括号 ( ) 会把括住的部分捕获下来。只是想分组的话写成 (?: ),后面各组的编号才不会往后挪。
  • 这里的每个式子都拿它自己的例子跑过。不过「长得像电子邮件」和「真有这个信箱」始终是两回事。
  • 开放式重复层层嵌套(比如 (a+)+)时,遇到某些输入耗时会爆炸式增长。把别人的式子粘进代码前,先找找有没有这种形状。

常见问题

Q. 匹配一个 UUID的正则表达式是什么?

^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$,标志用 i。

Q. 哪些字符串能匹配?

像 123e4567-e89b-12d3-a456-426614174000 这样的文字能匹配,像 123e4567-e89b-12d3-a456 这样的不能。

Q. 必须整个字符串都匹配吗?

是的。它被 ^ 和 $ 括住,只有整串合上才算通过。

Q. 抓到的内容怎么用?

没有捕获组,所以只会返回整段匹配(match[0])。只需要其中一部分的话,把那一段用圆括号括起来。