码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Excel】【正则】判断手机号是否正确


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

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

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

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

    1. Public Function RegExpMatch(input_range As Range, pattern As String, Optional match_case As Boolean = True) As Variant
    2. '存储结果的数组
    3. Dim arRes() As Variant
    4. '源单元格区域中当前行索引值
    5. '源单元格区域中当前列索引值
    6. '行数, 列数
    7. Dim iInputCurRow As Long
    8. Dim iInputCurCol As Long
    9. Dim cntInputRows As Long
    10. Dim cntInputCols As Long
    11. On Error GoTo ErrHandl
    12. RegExpMatch = arRes
    13. Set regex = CreateObject("VBScript.RegExp")
    14. regex.pattern = pattern
    15. regex.Global = True
    16. regex.MultiLine = True
    17. If True = match_case Then
    18. regex.ignorecase = False
    19. Else
    20. regex.ignorecase = True
    21. End If
    22. cntInputRows = input_range.Rows.Count
    23. cntInputCols = input_range.Columns.Count
    24. ReDim arRes(1 To cntInputRows, 1 To cntInputCols)
    25. For iInputCurRow = 1 To cntInputRows
    26. For iInputCurCol = 1 To cntInputCols
    27. arRes(iInputCurRow, iInputCurCol) = regex.Test(input_range.Cells(iInputCurRow, iInputCurCol).Value)
    28. Next
    29. Next
    30. RegExpMatch = arRes
    31. Exit Function
    32. ErrHandl:
    33. RegExpMatch = CVErr(xlErrValue)
    34. End Function

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

            

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

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

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

    3、另存为加载宏格式:

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

    5、点击浏览:

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

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

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

    ^((\+?86)|(\+86" role="presentation" style="position: relative;">\+86\+86))?1[3-9]\d{9}$

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

    第四步,到excel使用函数

    =RegExpMatch(A1,"^((\+?86)|(\+86" role="presentation" style="position: relative;">\+86\+86))?1[3-9]\d{9}$")

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

  • 相关阅读:
    竞赛 题目:垃圾邮件(短信)分类 算法实现 机器学习 深度学习 开题
    手机怎么打包?三个方法随心选!
    分布式搜索引擎
    单片机硬件和软件延时、RTOS相对延时和绝对延时
    java-net-php-python-s2sh教学管理平台hsg8229AGA2录像计算机毕业设计程序
    深度学习案例分享 | PyTorch 实现 Fashion-MNIST 服装数据分类
    链动2+1模式 一秒教您扩充你自己的私域流量池
    面试--线程池的执行流程和拒绝策略有哪些?
    C/C++疫情集中隔离 2021年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
    Docker-Docker基本组成和架构
  • 原文地址:https://blog.csdn.net/bo1839/article/details/136400526
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号