当前位置: 首页 > news >正文

如何自动获取短信验证码?

点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~

这篇文章通过解决实际项目开发中遇到的如何自动获取短信验证码的问题,进一步讲述在Java中如何使用正则。

Java中如何使用正则

Java中正则相关类位于java.util.regex包下,主要使用2个类,如下:

3d734c8e6851f1e41175b7f37db932ff.png

Pattern类:

Pattern是正则表达式regex的编译表示形式

ff9a8a5370fa14bfbb511e9a8ee229ad.png

Matcher类:

通过解释Pattern对输入的字符串input执行匹配操作的引擎

f9249ed17376ec51ef84b839c1887de2.png

注意:在Java代码中转义字符“\”要写成“\\”才表示一个“\”。

比如regex=\d,在Java代码中应该写成“\\d”。


实际问题:如何自动获取短信验证码?

短信验证码在目前的互联网应用的非常广泛,在一些重要操作中都需要输入短信验证码来验证身份信息。

列举3条不同的验证码短信内容如下:

1、【膜拜单车】您的验证码是5072.请在页面中提交验证码完成验证。

2、【大众点评】876529(大众点评网手机验证码,请完成验证),如非本人操作,请忽略本短信。

3、【百度】349865(动态验证码),请在30分钟内填写。

那么如何通过一个正则表达式来获取到3个不同类型的短信内容里的数字验证码呢?

首先分析以上3条短信内容,找出共同点:

1、验证码都是数字,可以是4位数字,也可以是6位数字

2、每条短信都包含“验证码”3个汉字

3、“验证码”3个字与数字的顺序关系,“验证码”3个字可以在数字前,也可以在数字后

有了上面的3个点,我们就可以写在正则工具里写正则表达式进行验证了。

1、4位数字或者6位数字,可以用“\d{4}|\d{6}”来匹配,我们使用捕获组( )来获取数字部分,即regex=(\d{4}|\d{6})

2、验证码3个字就用“验证码”来匹配,regex=验证码

3、“验证码”3个字在数字前,可以regex=验证码\D*(\d{4}|\d{6}),“验证码”3个字在数字后,可以regex=(\d{4}|\d{6})\D*验证码,这2个表达式是或的关系,需要用到括号来组织这2个表达式,然后再用或“|”来进行选择,即regex=(验证码\D*(\d{4}|\d{6}))|((\d{4}|\d{6})\D*验证码)

4、由于要通过捕获组( )来获取数字内容,又要用括号来组织关系,因此需要把或“|”两边的表达式部分用非捕获组(?:)来标记,因为我们只需要获取数字部分的括号( )匹配到的数字。即regex=(?:验证码\D*(\d{4}|\d{6}))|(?:(\d{4}|\d{6})\D*验证码)

如果这里看不懂的话,请看《一篇文章学会正则表达式的语法》的相关内容。

最后我们把分析到的表达式代入到Java代码完成功能。注意在Java中,反斜杠需要转义,即一杠变二杠。

a1b4e97ba2a4ee230116e68df34e1ff4.png

运行结果如下:

5084513b5dcda9136d720f4b73d8c624.png

如果想获取以上的源代码,请在后台回复关键词“正则源码”获取。


推荐一个正则工具“RegexBuddy”,在后台回复关键词“正则表达式”获取。

http://www.lryc.cn/news/172768.html

相关文章:

  • Linux 本地 Docker Registry本地镜像仓库远程连接【内网穿透】
  • 基于Yolov8的工业小目标缺陷检测(4):SPD-Conv,低分辨率图像和小物体涨点明显
  • 平均精度(AP)
  • 建议收藏《Verilog代码规范笔记_华为》(附下载)
  • Nginx环境搭建、负载均衡测试
  • 软件工程知识总结梳理
  • Mybatis自动映射Java对象 与 MySQL8后的JSON数据
  • 【JavaScript】深拷贝和浅拷贝
  • 【SLAM】10.纵观SLAM,对比方案和未来方向
  • PyTorch中DistributedDataParallel使用笔记
  • 前端面试的话术集锦第 18 篇博文——高频考点(HTTP协议 TLS协议)
  • SQL Server 数据库变成单个用户怎么办
  • 错过成考报名,今年你还有这两种方式升学!
  • 【2023】从事务的特征以及解决方式上分析MySQL是如何保证事务的
  • MTR 网络连通性测试工具 基础入门 整理
  • Linux安装mysql数据库并实现主从搭建
  • windows使用小技巧之windows照片查看器无法显示此图片
  • ez_pz_hackover_2016
  • 解决方案| anyRTC远程检修应用场景
  • IC芯片测试:如何对芯片静态功耗进行测试?
  • Redis面试二“缓存击穿是什么”
  • python使用apscheduler每隔一段时间自动化运行程序
  • 2023 Sui Builder House全球之旅圆满收官
  • OpenCV自学笔记二十三:K近邻算法
  • ChatGLM-中英对话大模型-6B试用说明
  • 小白入门pytorch(一)
  • 【STM32笔记】HAL库I2C通信配置、读写操作及通用函数定义
  • Direct3D模板缓存
  • 在windows上执行ssh-keygen报错Bad permissions
  • 给Proxmox VE 虚拟机分配巨大分区惹麻烦