正则表达式里的符号看着多,但核心就几类 —— 今天咱们聚焦字符组[]、取反^和量词这几个高频符号,用最直白的方式讲清楚它们的用法~
一、字符组[]:匹配 “其中任意一个字符”
先看第一个符号:[abc]
它的作用很简单:匹配方括号里的任意一个字符。
举个例子:
- 正则
[abc],可以匹配字符串里的a、b或者c - 如果你写
[123],就可以匹配1、2或者3
扩展一下:字符组还能写 “范围”,比如[a-z]代表匹配任意小写字母,[0-9]代表匹配任意数字(其实就是\d的等价写法)。
二、取反^:匹配 “不在组里的任意字符”
再看第二个符号:[^abc]
注意^在[]里面开头的位置,它的作用是取反:匹配 “不在方括号里的任意一个字符”。
举个例子:
- 正则
[^abc],可以匹配除了a、b、c之外的任何字符(比如d、1、#都能匹配) - 类似的,
[^0-9]就是匹配 “非数字”(等价于\D)
三、量词:控制 “字符 / 组出现的次数”
右边的*、+、?、{n}这些,都叫量词—— 用来限定 “前面的字符 / 组要出现多少次”
逐个解释:
| 量词 | 含义 | 例子 |
|---|---|---|
* | 出现0 次或多次(可有可无,次数不限) | a* 可以匹配 ""(空字符串)、a、aa、aaa… |
+ | 出现1 次或多次(至少出现 1 次) | a+ 可以匹配 a、aa、aaa…(但不能匹配空字符串) |
? | 出现0 次或 1 次(可选) | a? 可以匹配 "" 或 a |
{n} | 恰好出现n 次 | a{3} 只能匹配 aaa |
{n,} | 至少出现n 次 | a{2,} 可以匹配 aa、aaa、aaaa… |
{n,m} | 出现n 到 m 次(包含 n 和 m) | a{2,4} 可以匹配 aa、aaa、aaaa |
四、举个实战例子:组合起来用
比如要匹配 “以字母开头,后面跟任意数字(至少 1 位)” 的字符串,可以写:
^[a-zA-Z]\d+$
^[a-zA-Z]:开头是任意字母([a-zA-Z]匹配大小写字母)\d+:后面跟至少 1 位数字$:表示字符串结尾(确保后面没有其他内容)