如何在Excel中验证批量短信是否符合指定模板格式?
Excel中检查短信是否匹配对应模板的实操方法
核心逻辑
把模板里的[xxx]占位符替换成正则匹配规则,用正则校验实际短信的结构是否和模板一致——毕竟实际短信只是替换占位符,固定文本部分必须完全对应。
具体操作步骤
1. 把模板转成正则表达式
根据需求分两种情况处理:
- 只校验结构(不限制占位符内容):把所有
[xxx]替换成.*?(非贪婪匹配,防止把后面的固定文本也当成占位符内容),同时把模板里的.转成\.(因为.在正则里代表“任意字符”,要转义成普通点)。
比如原模板:
转成正则后:Your appointment is confirmed with [name] at [hh:mm] on [dd/mm/yy]. Please bring all your related documents.Your appointment is confirmed with .*? at .*? on .*?\. Please bring all your related documents\. - 严格校验占位符格式:比如时间
[hh:mm]要匹配xx:xx格式,就换成\d{2}:\d{2};日期[dd/mm/yy]换成\d{2}/\d{2}/\d{2},最终正则:Your appointment is confirmed with .*? at \d{2}:\d{2} on \d{2}/\d{2}/\d{2}\. Please bring all your related documents\.
2. 用VBA自定义函数做匹配(推荐)
Excel本身没有内置正则函数,写个简单的自定义函数就能解决:
- 按
Alt+F11打开VBA编辑器,右键插入「模块」 - 粘贴以下代码:
Function IsMatchSMS(smsText As String, regexPattern As String) As Boolean Dim regEx As Object Set regEx = CreateObject("VBScript.RegExp") regEx.Pattern = regexPattern IsMatchSMS = regEx.Test(smsText) End Function
- 保存文件(注意要存成
.xlsm启用宏的格式) - 回到Excel,在空白单元格输入公式:
=IsMatchSMS(A2, B2)- A2是要检查的实际短信,B2是对应模板转好的正则
- 返回
TRUE表示符合模板,FALSE表示不符合
3. 不用VBA的替代方法(适合禁用宏的场景)
把模板拆成几个固定文本片段,检查这些片段是否按顺序出现在短信里:
比如原模板拆成:
- "Your appointment is confirmed with "
- " at "
- " on "
- ". Please bring all your related documents."
用这个公式检查:
=AND(ISNUMBER(SEARCH("Your appointment is confirmed with ",A2)),ISNUMBER(SEARCH(" at ",A2,SEARCH("Your appointment is confirmed with ",A2)+LEN("Your appointment is confirmed with "))),ISNUMBER(SEARCH(" on ",A2,SEARCH(" at ",A2)+LEN(" at "))),ISNUMBER(SEARCH(". Please bring all your related documents.",A2,SEARCH(" on ",A2)+LEN(" on "))))
返回TRUE说明固定文本按顺序存在,结构符合模板。
4. 多模板批量检查
如果有好几套模板,用OR函数把多个匹配结果拼起来:
比如3个模板的正则在B2、C2、D2,公式写成:=OR(IsMatchSMS(A2,B2),IsMatchSMS(A2,C2),IsMatchSMS(A2,D2))
返回FALSE就代表这条短信不匹配任何一套模板。
5. 快速标记不符合的短信
用条件格式一键高亮:
- 选中所有短信所在单元格
- 点击「开始」→「条件格式」→「新建规则」
- 选择「使用公式确定要设置格式的单元格」,输入公式:
=NOT(IsMatchSMS(A2,B2)) - 设置填充颜色为红色,就能一眼看到不符合的短信
内容的提问来源于stack exchange,提问作者Tan Phat
相关产品推荐
相关产品推荐

