今天我们借助DeepSeek,来学习一下REGEXP正则表达式函数。学习 REGEXP函数可以帮助我们高效处理文本数据,尤其在数据验证、提取和清洗场景中。以下是三个工作中常用且基础的案例剖析,涵盖不同场景和语法。
REGEXP函数基本语法结构:
REGEXP(原始字符串,正则表达式,[匹配模式],[替换内容])
匹配模式是可选项,0或忽略表示提取,1表示判断是否包含,2表示替换。
替换内容是可选项,仅在匹配模式为2时有效,用来替换匹配的内容。
案例 1:验证邮箱地址格式
场景:检查我们输入的邮箱地址是否符合基本格式(如数据清洗或注册验证)。
电子邮箱的通用格式通常为 本地部分@域名,常见的错误包括缺少@、域名不完整、包含不允许的特殊字符等。
在实际应用中,验证电子邮箱格式可以通过正则表达式或内置的邮箱验证工具来实现。
比如我们输入REGEXP函数:
=REGEXP(A2,"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$",1)
^ 和 $ 表示字符串的开始和结束,确保严格匹配。
[a-zA-Z0-9._%+-]+ 匹配用户名部分(允许字母、数字、点、下划线等)。
@ 后接域名部分 [a-zA-Z0-9.-]+,最后是顶级域名 \.[a-zA-Z]{2,}(至少两个字母,如 .com)。
案例 2:从文本中提取电话号码
场景:从文本字段中提取特定格式的电话号码,如 (123) 456-7890。
输入REGEXP正则表达式函数:
=REGEXP(A2,"\(\d{3}\) \d{3}-\d{4}")
\( 和 \) 匹配括号(需转义)。
\d{3} 匹配 3 位数字。
案例 3:身份证号脱敏(替换部分字符)
场景:将身份证号中间部分替换为 *(如数据脱敏)。
身份证号码最后可能包含一个字母,例如校验码X,需要调整正则表达式以适应不同长度。可以使用REGEXP正则表达式函数:
=REGEXP(A2, "(?<=\d{6})\d(?=\d{3,4}[A-Za-z]?)",2, "*")
(?<=\d{6}):正向精确查找,确保匹配的数字前面有且仅有6位数字。
\d:匹配任意单个数字。
(?=\d{3,4}):正向精确查找,确保匹配的数字后面有3到4位数字,考虑到最后可能有1位字母。[A-Za-z]?:匹配可选的字母(大小写均可)。
"*":将匹配到的数字替换为星号。
这样,公式可以处理15位纯数字身份证或18位含字母的身份证号码。
Tags:正则表达式匹配任意字符