乐于分享
好东西不私藏

Excel 365 新函数 REGEX 完全指南 — 文本处理的终极武器

Excel 365 新函数 REGEX 完全指南 — 文本处理的终极武器

Excel 365 最新引入的 REGEX 系列函数,让正则表达式终于走进了电子表格。本文系统讲解 REGEXEXTRACT / REGEXTEST / REGEXREPLACE 三大函数。

一、REGEX 系列函数是什么

REGEX(正则表达式)是一套强大的文本模式匹配语法。Excel 365 引入了三个配套函数:

函数
作用
REGEXEXTRACT
从文本中提取符合正则模式的片段
REGEXTEST
判断文本中是否存在匹配的片段(返回 TRUE/FALSE)
REGEXREPLACE
用新文本替换匹配到的内容

二、适用版本

函数
支持版本
REGEXEXTRACT / REGEXTEST / REGEXREPLACE
Excel 365

(需要 Microsoft 365 订阅,更新通道:Beta 或 Monthly Enterprise)
替代方案(老版本)
FIND + MID / SUBSTITUTE / TEXTSPLIT / IFERROR 组合

⚠️ 这些函数目前正在陆续向所有 Microsoft 365 用户推送,部分用户可能尚未收到更新。如果看到 #NAME? 错误,说明当前版本暂不支持。


三、基本语法

=REGEXEXTRACT(文本, 正则模式, [返回第几个匹配])=REGEXTEST(文本, 正则模式, [是否区分大小写])=REGEXREPLACE(文本, 正则模式, 替换文本, [替换第几个])

四、15 个实战场景

场景 1:提取手机号

=REGEXEXTRACT("联系电话: 13812345678 转分机888", "\d{11}")→ 结果: 13812345678

\d{11} 表示匹配 11 位连续数字。


场景 2:提取邮箱用户名

=REGEXEXTRACT("联系邮箱: zhangsan@example.com", "[a-zA-Z0-9._%+-]+(?=@)")→ 结果: zhangsan

(?=@) 是零宽断言,只匹配 @ 前面的部分。


场景 3:提取邮箱域名

=REGEXEXTRACT("邮箱: zhangsan@example.com", "@[a-zA-Z0-9.-]+")→ 结果: @example.com

@ 开头匹配,提取 @ 及其后面的域名部分。


场景 4:提取数字(全部数字)

=REGEXEXTRACT("产品编号: ABC-123-XYZ-456", "\d+")→ 结果: 123 (返回第一个数字序列)

场景 5:同时提取多个匹配(第 2 个参数)

=REGEXEXTRACT("ABC-123-XYZ-456", "\d+", 2)→ 结果: 456 (返回第二个数字序列)

场景 6:判断文本是否符合格式(REGEXTEST)

=REGEXTEST("13812345678", "^1[3-9]\d{9}$")→ 结果: TRUE (中国手机号格式验证)

场景 7:批量验证邮箱格式

=REGEXTEST(A1, "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$")→ 合规返回 TRUE,不合规返回 FALSE

场景 8:替换手机号(脱敏处理)

=REGEXREPLACE("手机: 13812345678", "\d{7}(\d{4})", "***$1")→ 结果: 手机: ***45678 (中间7位脱敏)

场景 9:统一日期格式

=REGEXREPLACE("日期: 2024/03/15", "(\d{4})[/\-](\d{2})[/\-](\d{2})", "$1-$2-$3")→ 结果: 日期: 2024-03-15 (统一为横杠分隔)

场景 10:去掉文本中的所有空格

=REGEXREPLACE("张 三 ,  北  京", "\s+","")→ 结果: 张三,北京

\s+ 匹配一个或多个空白字符。


场景 11:提取括号内的内容

=REGEXEXTRACT("订单号(ORDER123)备注(加急)","\(([^)]+)\)", 1)→ 结果: ORDER123 (第一个括号内容)

场景 12:提取中文内容

=REGEXEXTRACT("张三 Beijing 李四 Shanghai","[\u4e00-\u9fa5]+")→ 结果: 张三

[\u4e00-\u9fa5] 匹配所有常用汉字。


场景 13:提取英文字母内容

=REGEXEXTRACT("张三Beijing李四","[a-zA-Z]+")→ 结果: Beijing

场景 14:提取 URL 中的协议

=REGEXEXTRACT("https://www.example.com/page","^[a-z]+://")→ 结果: https://

场景 15:提取 URL 中的域名

=REGEXEXTRACT("https://www.example.com/path","://([^/]+)")→ 结果: www.example.com

五、REGEX 正则核心语法速查

基本元字符

符号
含义
示例
.
任意单个字符
a.c

 → abc, aXc
\d
任意数字(0-9)
\d{11}

 → 11位手机号
\D
任意非数字
\D+

 → 字母
\w
字母/数字/下划线
\w+

 → 单词
\s
空白字符
\s+

 → 空格/制表符
^
字符串开始
^1\d

 → 以1开头的数字
$
字符串结尾
\d$

 → 以数字结尾
\
转义特殊字符
\.

 → 匹配点号本身

量词

符号
含义
示例
*
0次或多次
\d*

 → 任意数字(可无)
+
1次或多次
\d+

 → 至少1位数字
?
0次或1次
https?

 → http 或 https
{n}
恰好n次
\d{11}

 → 精确11位
{n,}
至少n次
\d{3,}

 → 至少3位
{n,m}
n到m次
\d{3,6}

 → 3到6位

字符类

符号
含义
示例
[abc]
匹配 a/b/c 任一
[aeiou]

 → 任意元音字母
[a-z]
匹配 a 到 z 范围
[a-zA-Z]

 → 所有英文字母
[^abc]
排除 a/b/c
[^0-9]

 → 非数字

捕获组与引用

符号
含义
示例
(...)
捕获组
(abc)

 捕获 abc
$1,$2
引用捕获组
$1

 引用第1组

六、常见错误处理

错误
原因
解决方法
#NAME?
Excel 版本不支持 REGEX
升级到最新 Microsoft 365
#VALUE!
正则模式语法错误
检查正则表达式语法
#CALC!
无匹配结果且未设默认值
添加 IFERROR 包裹
无结果
REGEXEXTRACT 无匹配
REGEXTEST 先判断是否存在

七、版本说明

REGEX 系列函数目前正在向 Microsoft 365 用户分批推送,更新通道为 Beta 或 Monthly Enterprise 通道的用户会率先收到。

尚未收到的用户 可以使用以下替代方案:

# 提取手机号(传统方法)=MID(A1,FIND("1",A1), 11)# 邮箱格式验证(传统方法)=IF(AND(ISNUMBER(FIND("@",A1)), ISNUMBER(FIND(".",A1))), TRUEFALSE)# 替换文本(SUBSTITUTE=SUBSTITUTE(A1,"旧文本","新文本")

八、核心公式速查

需求
公式
提取11位手机号
=REGEXEXTRACT(文本,"\d{11}")
提取邮箱用户名
=REGEXEXTRACT(文本,"[a-zA-Z0-9._%+-]+(?=@)")
提取邮箱域名
=REGEXEXTRACT(文本,"@[a-zA-Z0-9.-]+")
提取数字
=REGEXEXTRACT(文本,"\d+")
提取中文
=REGEXEXTRACT(文本,"[\u4e00-\u9fa5]+")
提取英文
=REGEXEXTRACT(文本,"[a-zA-Z]+")
手机号验证
=REGEXTEST(文本,"^1[3-9]\d{9}$")
邮箱格式验证
=REGEXTEST(文本,"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$")
脱敏手机号
=REGEXREPLACE(文本,"\d{7}(\d{4})", "***$1")
统一日期格式
=REGEXREPLACE(文本,"(\d{4})[/\-](\d{2})[/\-](\d{2})", "$1-$2-$3")
去除所有空格
=REGEXREPLACE(文本,"\s+", "")
提取括号内容
=REGEXEXTRACT(文本,"\(([^)]+)\)", 1)
批量替换关键词
=REGEXREPLACE(文本,"关键词1|关键词2", "替换词")

总结: REGEX 系列函数(REGEXEXTRACT / REGEXTEST / REGEXREPLACE)是 Excel 文本处理的重大升级,让正则表达式的强大能力终于直接走进电子表格。适合处理手机号提取、邮箱验证、文本清洗、格式统一等复杂场景。如果你的 Excel 365 尚未收到更新,建议持续关注 Microsoft 365 更新公告。

如果你觉得这篇有用,欢迎转发给需要的朋友!