正则表达式必懂符号:[]、^、量词怎么用?一篇讲透

86 阅读2分钟

正则表达式里的符号看着多,但核心就几类 —— 今天咱们聚焦字符组[]、取反^和量词这几个高频符号,用最直白的方式讲清楚它们的用法~

一、字符组[]:匹配 “其中任意一个字符”

先看第一个符号:[abc]

它的作用很简单:匹配方括号里的任意一个字符

举个例子:

  • 正则[abc],可以匹配字符串里的ab或者c
  • 如果你写[123],就可以匹配12或者3

扩展一下:字符组还能写 “范围”,比如[a-z]代表匹配任意小写字母,[0-9]代表匹配任意数字(其实就是\d的等价写法)。

二、取反^:匹配 “不在组里的任意字符”

再看第二个符号:[^abc]

注意^[]里面开头的位置,它的作用是取反:匹配 “不在方括号里的任意一个字符”。

举个例子:

  • 正则[^abc],可以匹配除了abc之外的任何字符(比如d1#都能匹配)
  • 类似的,[^0-9]就是匹配 “非数字”(等价于\D

三、量词:控制 “字符 / 组出现的次数”

右边的*+?{n}这些,都叫量词—— 用来限定 “前面的字符 / 组要出现多少次”

逐个解释:

量词含义例子
*出现0 次或多次(可有可无,次数不限)a* 可以匹配 ""(空字符串)、aaaaaa
+出现1 次或多次(至少出现 1 次)a+ 可以匹配 aaaaaa…(但不能匹配空字符串)
?出现0 次或 1 次(可选)a? 可以匹配 "" 或 a
{n}恰好出现n 次a{3} 只能匹配 aaa
{n,}至少出现n 次a{2,} 可以匹配 aaaaaaaaa
{n,m}出现n 到 m 次(包含 n 和 m)a{2,4} 可以匹配 aaaaaaaaa

四、举个实战例子:组合起来用

比如要匹配 “以字母开头,后面跟任意数字(至少 1 位)” 的字符串,可以写:

^[a-zA-Z]\d+$
  • ^[a-zA-Z]:开头是任意字母([a-zA-Z]匹配大小写字母)
  • \d+:后面跟至少 1 位数字
  • $:表示字符串结尾(确保后面没有其他内容)