【Excel】【正则】判断手机号是否正确

发现导出的手机号,有部分存在问题,故想直接通过excel做正则的判断

先说结论:通过VBA实现了正则函数的嵌入,但实际效率非常低下,80万的数据跑了半小时(T14 十代i7)

参考文章:正则表达式直接在EXCEL中使用的详细步骤_正则表达式_脚本之家

第一步,找到VAB的函数(百度找的,找不到来源了)

vbscript 复制代码
Public Function RegExpMatch(input_range As Range, pattern As String, Optional match_case As Boolean = True) As Variant

   '存储结果的数组

    Dim arRes() As Variant

   '源单元格区域中当前行索引值

   '源单元格区域中当前列索引值

   '行数, 列数

    Dim iInputCurRow As Long

    Dim iInputCurCol As Long

    Dim cntInputRows As Long

    Dim cntInputCols As Long

    On Error GoTo ErrHandl

    RegExpMatch = arRes

   

    Set regex = CreateObject("VBScript.RegExp")

   

   regex.pattern = pattern

   regex.Global = True

   regex.MultiLine = True

   

    If True = match_case Then

       regex.ignorecase = False

    Else

       regex.ignorecase = True

    End If

   

   cntInputRows = input_range.Rows.Count

   cntInputCols = input_range.Columns.Count

    ReDim arRes(1 To cntInputRows, 1 To cntInputCols)

 

    For iInputCurRow = 1 To cntInputRows

        For iInputCurCol = 1 To cntInputCols

           arRes(iInputCurRow, iInputCurCol) = regex.Test(input_range.Cells(iInputCurRow, iInputCurCol).Value)

        Next

    Next

 

  RegExpMatch = arRes

  Exit Function

 

ErrHandl:

   RegExpMatch = CVErr(xlErrValue)

End Function

第二步,嵌入到Excel中,顺序如下:

下面我们使用的这个方法,定义出的函数将长期有效:

1、新建一个EXCEL文件,我这里命名为RE,随后按ALT+F11打开宏编辑器,选中任意一个sheet,右键,选择插入模块:

2、双击模块1,编辑如第一步的VBA自定义函数代码

3、另存为加载宏格式:

4、点击下方的加载项:(不同版本Excel可以百度如何打开开发工具以及如何打开加载项)

5、点击浏览:

6、选择我们刚保存的加载宏格式文件,结果如下图:

好了,到这里我们的正则函数就创建好了,随后每次打开EXCEL都可以直接使用定义的RegExpMatch函数,按照需求来敲出合适的正则表达式。

第三步,找一段手机号匹配的正则规则

^((\+?86)|(\(\+86\)))?1[3-9]\d{9}$

#匹配前缀是86或者+86,第一位为1,第二位为3-9的数字,第三位开始有9位数字#

第四步,到excel使用函数

=RegExpMatch(A1,"^((\+?86)|(\(\+86\)))?1[3-9]\d{9}$")

最终,对80万手机号进行了验证,花了大概半小时,而且每次打开都要重新跑一次(不过会快一点),建议跑完之后立即将结果复制成文本。

相关推荐
fruge2 小时前
前端正则表达式实战合集:表单验证与字符串处理高频场景
前端·正则表达式
爱吃甜品的糯米团子5 小时前
JavaScript 正则表达式:选择、分组与引用深度解析
前端·javascript·正则表达式
zhangyao9403308 小时前
关于js导入Excel时,Excel的(年/月/日)日期是五位数字的问题。以及对Excel日期存在的错误的分析和处理。
开发语言·javascript·excel
高山上有一只小老虎12 小时前
java 正则表达式大全
java·正则表达式
weixin_4368040715 小时前
正则表达式可视化 - 正则表达式可视化与文本匹配工具
正则表达式
X@AKS1 天前
解决使用EasyExcel导出带公式的excel,公式不自动计算问题
excel
Wang201220131 天前
wps excel中把特定几列除以某一列,然后以百分比显示
excel
LilySesy1 天前
ABAP+在select的时候,可以A=B A=C B=C这样子JOIN吗?
数据库·sql·ai·excel·sap·abap
zhishidi1 天前
Excel表格自适应大小设置方法
excel
缺点内向1 天前
C#: 高效移动与删除Excel工作表
开发语言·c#·.net·excel