最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Excel新函数REGEXP怎么用:操作要点整理
时间:2026-07-11 12:57:46 编辑:袖梨 来源:一聚教程网
excel 本身没有单独叫 regexp 的正式函数,大家平时说的「regexp 新函数」,其实是 microsoft 365 新增的三个正则相关函数:regextest 用来判断文本是否符合指定规则,regexextract 用来提取匹配到的内容,regexreplace 用来按规则替换文本。平时处理订单号、客户编号、邮箱、编码这类格式固定的内容,先写好匹配模式,选对应的函数用就行。
本次操作环境:Microsoft Excel,版本为 Microsoft 365 16.93 桌面版。正则函数是 Microsoft 365 推出的较新功能,如果你用的是 WPS 或者旧版 Excel,得先确认软件本身支不支持这几个函数。
第一步:准备示例文本和正则模式
先把所有要处理的文本放到同一列,旁边列好你要判断、提取、替换的目标。这次示例用订单号、客户编号、产品型号和邮箱当素材,模式里的 d 代表任意数字,{4} 代表前面的规则要连续出现 4 次,^ 和 $ 分别限定从文本开头、结尾做匹配。
如果只是要检查文本里「有没有某段内容」,匹配模式可以写宽松一点;但要判断整格内容是不是完全符合指定格式,就得加上开头和结尾的限定。比如订单号示例 ^A-d{4}-d{4}$ 的含义是:文本必须以 A- 开头,后面接4位数字,再跟一个短横线加4位数字。
第二步:用 REGEXTEST 判断是否匹配
在结果单元格输入 =REGEXTEST(A2,"^A-d{4}-d{4}$"),Excel 会直接返回 TRUE 或者 FALSE。TRUE 代表 A2 里的文本完全符合这个订单号格式,FALSE 代表前缀、位数、分隔符或者内容完整性任意一项不满足要求。
REGEXTEST 非常适合做格式校验,比如核对员工编号、合同编号、客户编号、邮箱是不是符合规范。它只会返回「匹配/不匹配」的结果,不会把具体内容提出来,需要提取特定片段的时候换用 REGEXEXTRACT 就行。
第三步:用 REGEXEXTRACT 提取匹配内容
在客户编号提取列输入 =REGEXEXTRACT(A2,"KH-d{4}-d{4}"),就能从「华东-张三-KH-2026-0710」这类混杂的文本里单独把客户编号取出来。模式里的 KH- 是固定前缀,后面两段 d{4} 分别匹配4位数字。
REGEXEXTRACT 还可以搭配捕获组使用,比如公式 =REGEXEXTRACT(A4,"@(.+)$",2) 就能从邮箱里提取 @ 后面的域名,第三个参数填2的时候,返回的是第一个匹配结果里的捕获组内容,而不是完整的匹配文本。
第四步:用 REGEXREPLACE 替换或脱敏
想要把客户编号最后四位替换成星号,可以输入公式 =REGEXREPLACE(A2,"(d{3})d{4}(d{4})","$1****$2")。这里用括号把不需要替换的前半段编号存起来,后面替换文本里直接用 $1 引用这段内容就行。
REGEXREPLACE 不光能用来做信息脱敏,还能用来清洗文本。比如 =REGEXREPLACE(A3,"s+"," ") 可以把连续的多个空格合并成一个,=REGEXREPLACE(A4,"^编号:","") 可以直接删掉文本开头的固定中文前缀。
语法和参数怎么记
| 函数 | 基础语法 | 返回结果 | 常用场景 |
|---|---|---|---|
| REGEXTEST | =REGEXTEST(text, pattern, [case_sensitivity]) |
TRUE 或 FALSE | 判断编号、客户编号、邮箱等格式是否匹配 |
| REGEXEXTRACT | =REGEXEXTRACT(text, pattern, [return_mode], [case_sensitivity]) |
匹配到的文本或捕获组 | 从混合文本中提取订单号、客户编号、域名 |
| REGEXREPLACE | =REGEXREPLACE(text, pattern, replacement, [occurrence], [case_sensitivity]) |
替换后的文本 | 脱敏、去前缀、清理空格、统一格式 |
常用正则符号速查
| 符号 | 含义 | 示例 |
|---|---|---|
d |
任意数字 |
d{4} 匹配 4 位数字 |
. |
任意单个字符 |
A. 可匹配 A1、AB |
* |
出现 0 次或多次 |
s* 匹配可有可无的空白 |
+ |
出现 1 次或多次 |
s+ 匹配连续空格 |
{n} |
固定出现 n 次 |
d{4} 匹配 4 位数字 |
[] |
字符范围 |
[A-Z] 匹配大写字母 |
() |
捕获组 |
(d{3}) 捕获前三位数字 |
^ / $
|
开头 / 结尾 |
^A 限制以 A 开头 |
常见错误和处理办法
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
#NAME? |
当前 Excel 不支持该函数,或函数名拼错 | 确认 Microsoft 365 版本是否已更新,函数名用 REGEXTEST、REGEXEXTRACT、REGEXREPLACE |
#N/A 或空结果 |
模式没有匹配到文本 | 先放宽模式测试,再逐步加 ^、$、位数限制 |
| 结果只提到一部分 | 模式写得过窄,或捕获组参数返回了组内容 | 检查括号位置和 return_mode,确认要返回完整匹配还是某个捕获组 |
| 替换结果不对 | 捕获组编号引用错了 | REGEXREPLACE 里按括号顺序使用 $1、$2
|
扩展示例
| 需求 | 公式 | 说明 |
|---|---|---|
| 判断客户编号 | =REGEXTEST(A2,"^KH-d{4}-d{4}$") |
适合录入前做格式检查 |
| 提取订单号 | =REGEXEXTRACT(A2,"A-d{4}-d{4}") |
从备注、流水、邮件标题中取编号 |
| 提取邮箱域名 | =REGEXEXTRACT(A2,"@(.+)$",2) |
用捕获组只返回 @ 后面的内容 |
| 压缩连续空格 | =REGEXREPLACE(A2,"s+"," ") |
清理复制来的名单、型号、地址 |
| 编号脱敏 | =REGEXREPLACE(A2,"(KH-d{4})-d{4}","$1-****") |
对外发清单前隐藏末段编号 |
三个函数分开记就很清楚:要判断格式合不合规,用 REGEXTEST;要把指定片段从文本里拿出来,用 REGEXEXTRACT;要改写替换文本内容,用 REGEXREPLACE。写匹配模式的时候先拿一个已知的样本调通,再批量填充到整列,要是出问题先检查三点:软件支不支持函数、正则规则是不是写太严、捕获组的编号有没有写错。