idc_ExtractID函数
函数名:sfz_提取身份证 / idc_ExtractID
函数功能
从文本中提取符合中国大陆18位身份证号码格式的所有身份证号码,支持横向或纵向输出。
参数规范
| 参数名 | 类型 | 必填 | 示例 | 特殊说明 |
|---|---|---|---|---|
input | String | 是 | "张三身份证号是110105199003071234" | 含身份证号码的任意文本 |
horizontalOutput | Boolean | 否 | TRUE | 输出方向,默认横向输出 |
使用案例
单条文本提取
问题描述:提取文本中的身份证号码 公式演示:
excel
=idc_ExtractID("张三身份证号是110105199003071234")输出效果(横向): | 110105199003071234 |
多条号码提取与输出方向控制
问题描述:文本中含多个身份证号码,横向或纵向输出 公式演示:
excel
=idc_ExtractID("身份证A:110105199003071234;身份证B:320311198812120019", FALSE)输出效果(纵向): | 110105199003071234 | | 320311198812120019 |
空文本或无匹配时返回空数组
问题描述:无身份证号码时无输出 公式演示:
excel
=idc_ExtractID("无身份证号码的文本")输出效果:空数组或空单元格
技术说明
正则表达式规则
- 使用正则表达式匹配18位身份证号码,具体格式为:
(\d{6})([1-9]\d{3})((0[1-9])|(1[0-2]))(([0-2][1-9])|(3[0-1]))\d{3}[0-9Xx]即:6位地址码 + 4位年份(不以0开头)+ 2位月份 + 2位日期 + 3位顺序码 + 1位校验码(数字或X/x)
输出格式
horizontalOutput = TRUE:横向一行多列输出horizontalOutput = FALSE:纵向一列多行输出
调用说明
函数内部调用通用正则提取函数wb_正则提取完成匹配与格式化输出。
异常处理
| 错误场景 | 返回值 |
|---|---|
| 输入为空 | 空数组或空值 |
| 无匹配结果 | 空数组或空值 |
扩展应用
批量文本身份证号码提取
适用于日志、批量文档等含混合内容中自动提取身份证信息。
结合数据校验
配合身份证格式验证函数,提升数据录入及审核效率。
注:本函数依赖
wb_正则提取,需确保该辅助函数可用。测试环境包括WPS 2019+和Excel 365。