regPractice-正则表达式练习

正则表达式练习(java)

1 . 校验密码强度

密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间。

^(?=.*\d)(?=.*\[a-z])(?=.*[A-Z])[a-zA-Z\d]{8,10}$

**(?=pattern)**属于正向前瞻断言

正向前瞻断言的语法是 (?=pattern),它表示接下来的字符序列必须匹配 pattern,但 pattern 不会被包含在最终的匹配结果中。

  • (?=pattern):确保在当前匹配位置之后,紧接着的字符序列能够匹配 pattern

示例

  • (?=.*\d):确保在任何位置之后,字符串中至少有一个数字。. 表示任意字符(除了换行符),* 表示零次或多次,\d 表示数字字符。

解释:

使用了三个正向前瞻断言,目的是保证在字符串至少要分别存在一个数字、一个小写字母、一个大写字母,**[a-zA-Z\d]{8,10}**保证了不能使用特殊字符,并且字符串长度在8-10位之间

3. 由数字、26个英文字母或下划线组成的字符串

必须包含数字、字母,可以允许有或者没有下划线,长度为10-12

^(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z_\d]{10,12}$

解释:

使用两个正向前瞻断言,保证数字和字母都存在,然后保证只能存在数字、字母以及下划线,并保证长度在10-12位

2 密码强度正则

密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^0-9a-zA-Z]).{6,}$

解释:

三个正向前瞻断言保证至少1个大写字母,1个小写字母,1个数字,最后保证长度至少为6

在这里插入图片描述

微信号正则

微信号正则,6至20位,以字母开头,字母,数字,减号,下划线

手机号正则
  1. 手机号码由11位数字组成。
  2. 第一位数字是1。
  3. 第二位数字可以是3、4、5、6、7、8、9中的任意一个。
  4. 剩下的九位数字可以是0-9中的任意数字。
^1[3-9]\d{9}$

解释:没啥好解释的,这个简单

qq邮箱正则

QQ邮箱的基本格式是 <QQ号码>@qq.com,其中qq号码位数为5-10之间

^\d{5,10}@qq\.com$

解释:无,注意一下符号“.”要转义一下,不然会被识别成任意字符

金额校验

查询字符串是否能表示为金额,其中可以是整数也可以是小数,整数没有小数点,小数有小数点

^\d+(\.\d+)?$

解释:小数点前至少有一个数字,然后**()?**表示一个可选组,用于匹配小数点以及之后的数字

身份证

身份证号涉及到许多省号和区号代码等等,这里对规则进行简化

  1. 1-6位:随机数字
  2. 第7~14位:出生年月日,格式为YYYYMMDD。
  3. 第15、16、19位:顺随机数字。
  4. 第18位:0-9或者X
^\d{6}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dX]$

解释:主要注意一下出生年月日的规则不要漏了,但实际上这里也没有考虑闰年以及每个月的天数,真正要判断日期的话,似乎不太适合用正则

ipv4地址

IPv4地址由四个八位的二进制数(称为八位字节或字节)组成,每个字节之间由一个点(.)分隔。每个八位字节可以转换为一个0到255之间的十进制数。

格式xxx.xxx.xxx.xxx,四个八位二进制转换为十进制之后范围在0-255之间,不需要补0,即192.168.1.1是正确的,但192.168.001.001是错误的

^((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$

解释:保证每一段数字在0-255之间,并且不需要补0,前三段数字后面需要跟一个".",所以可以使用

在这里插入图片描述

来定义前三段(因为前三段规则是一样的),最后一段相比前三段少了一个"."符号


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149690.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【React与Vue】如何在页签中监听 LocalStorage 变化?这些方法你都试过吗?

在开发中&#xff0c;你是否会碰到过这样的需求&#xff1a;需要监听 LocalStorage 的变化。这在不同浏览器页签间是相对简单的&#xff0c;因为浏览器提供了内置的 storage 事件。但在同一个浏览器页签下&#xff0c;却没有直接的方式实现。今天&#xff0c;我们探讨下有几种高…

化工企业如何精准网络营销

合作咨询联系竑图 hongtu201988 网络推广已成为各行各业不可或缺的一部分&#xff0c;尤其是化工企业&#xff0c;其产品的专业性和复杂性更需要通过有效的网络推广手段来触达目标客户群体。以下是一份针对化工企业的网络推广方案&#xff0c;旨在通过多渠道的营销策略&#x…

【机器学习】---元强化学习

目录 1. 元学习简介1.1 什么是元学习&#xff1f;1.2 元学习的应用 2. 强化学习基础2.1 什么是强化学习&#xff1f;2.2 强化学习的基本框架2.3 深度强化学习 3. 元强化学习的概念与工作原理3.1 元强化学习是什么&#xff1f;3.2 元强化学习与普通强化学习的区别 4. 元强化学习…

Google 提供基于AI的模糊测试框架

人工智能驱动的 OSS-Fuzz 工具可以帮助发现漏洞&#xff0c;并与自动修补管道相结合。 模糊测试可以成为找出软件中零日漏洞的宝贵工具。为了鼓励开发人员和研究人员使用它&#xff0c;谷歌周三宣布&#xff0c;免费提供其模糊测试框架OSS-Fuzz。 根据谷歌的说法&#xff0c;通…

初学51单片机之I2C总线与E2PROM

首先先推荐B站的I2C相关的视频I2C入门第一节-I2C的基本工作原理_哔哩哔哩_bilibili 看完视频估计就大概知道怎么操作I2C了&#xff0c;他的LCD1602讲的也很不错&#xff0c;把数据建立tsp和数据保持thd&#xff0c;比喻成拍照时候的摆pose和按快门两个过程&#xff0c;感觉还是…

什么是SSL证书?它能保护你的网络安全!

相信大家在浏览网页时经常会看到一些网址前面有个“小锁”图标&#xff0c;它代表的网站是安全的&#xff0c;而这背后的秘密就是SSL证书。那SSL证书到底是什么&#xff1f;它有什么用呢&#xff1f; 什么是SSL证书&#xff1f; SSL证书的全称是Secure Sockets Layer证书&…

C/C++指针的前世今生

前言 老早之前就想写这个内容了&#xff0c;打了草稿后闲置了两个月&#xff0c;因为其他事就没再动过这个东西了&#xff0c;今天翻草稿箱的时候发现了它&#xff0c;就把它完善出来&#xff0c;顺便我也学习学习。 正文 指针的前世今生 前面先说一下&#xff0c;故事是随…

Linux文件IO(十一)-复制文件描述符与截断文件

1.复制文件描述符 在 Linux 系统中&#xff0c;open 返回得到的文件描述符 fd 可以进行复制&#xff0c;复制成功之后可以得到一个新的文件描述符&#xff0c;使用新的文件描述符和旧的文件描述符都可以对文件进行 IO 操作&#xff0c;复制得到的文件描述符和旧的文件描述符拥…

想转行AI大模型开发但不知如何下手?看这篇就够了!

原创 最近有很多小伙伴问我&#xff0c;之前从事的其他领域的编程&#xff0c;现在想要学习AI大模型开发的相关技能&#xff0c;不知道从哪下手&#xff0c;应该学习些什么&#xff0c;下面四个是我认为从事大模型开发&#xff0c;必须掌握的四个开源工具&#xff0c;大家可以…

2024年模式识别与图像分析国际学术会议(PRIA 2024)

2024年模式识别与图像分析国际学术会议&#xff08;PRIA 2024&#xff09; 2024 International Conference on Pattern Recognition and Image Analysis 2024年10月18-20日 南京 三轮截稿日期&#xff1a;10月10日 2024年模式识别与图像分析国际学术会议&#xff08;PRIA 2…

流水线部署失败排查指南

在现代软件开发中&#xff0c;CI/CD&#xff08;持续集成/持续交付&#xff09;流水线是确保代码质量和快速交付的重要工具。然而&#xff0c;部署失败时&#xff0c;排查问题的能力至关重要。以下是一些常见的故障排查步骤和技巧。 ## 1. 检查流水线日志 首先&#xff0c;查看…

【JAVA-数据结构】时间空间复杂度计算案例

接着上一篇文章&#xff0c;对应举一些例子。 1.时间复杂度 【实例1】 // 计算func2的时间复杂度&#xff1f; void func2(int N) {int count 0;for (int k 0; k < 2 * N ; k) {count;} int M 10;while ((M--) > 0) {count;} System.out.println(count); } 基本操作…

什么是远程过程调用(RPC)

进程间通信(IPC) 进程间通信(Inter-Process Communication)是指两个进程或者线程之间传送数据或者信号的一些技术或者方法。进程是计算机进行资源分配的最小的单位。每个进程都有自己独立的系统资源,而且彼此之间是相对隔离的。为了使得不同的进程之间能够互相访问,相互协…

简单的mybatis batch插入批处理

简单的mybatis batch插入批处理 1.需求 公司的权限管理功能有一个岗位关联资源的分配操作&#xff0c;如果新增一个岗位&#xff0c;有时候需要将资源全部挂上去&#xff0c;原有的是for循环插入资源信息&#xff0c;发现有时候执行速度过慢&#xff0c;所以此处想修改为批处…

基于TCP协议的网络通信

TCP即传输控制协议&#xff0c;基于TCP协议的网络通信总是面向连接的&#xff0c;在通信过程中需要进行“三次握手&#xff0c;四次挥手”&#xff0c;这是众所周知的&#xff0c;所以这里不过多赘述。我们都知道TCP协议传输数据比较稳定&#xff0c;那么为什么稳定&#xff0c…

pip的安装和使用

pip的安装和使用 1、 pip 是一个现代的&#xff0c;通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。便于我们对Python的资源包进行管理。 2、注&#xff1a;pip 已内置于 Python 3.4 和 2.7 及以上版本&#xff0c;其他版本需另行安装。 3、在安…

RAG高级优化:一文看尽query的转换之路

准确地找到与用户查询最相关的信息是RAG系统成功的关键&#xff0c;如何帮助检索系统提升召回的效果是RAG系统研究的热门方向。本文将介绍三种query理解的方法&#xff0c;以增强检索增强生成(RAG)系统中的检索过程&#xff1a; 查询重写&#xff1a; 重新定义查询&#xff0c;…

[Python学习日记-29] 开发基础练习2——三级菜单与用户登录

[Python学习日记-29] 开发基础练习2——三级菜单与用户登录 简介 三级菜单 用户登录 简介 该练习使用了列表、字典、字符串等之前学到的数据类型&#xff0c;用于巩固实践之前学习的内容。 三级菜单 一、题目 数据结构&#xff1a; menu { 北京: { 海淀: { …

什么是unix中的fork函数?

一、前言 在本专栏之前的文档中已经介绍过unix进程环境相关的概念了&#xff0c;本文将开始介绍unix中一个进程如何创建出新进程&#xff0c;主要是通过fork函数来实现此功能。本文将包含如下内容&#xff1a; 1.fork函数简介 2.父进程与子进程的特征 3.如何使用fork创建新进程…

基于单片机的指纹打卡系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52RC&#xff0c;采用两个按键替代指纹&#xff0c;一个按键按下&#xff0c;LCD12864显示比对成功&#xff0c;则 采用ULN2003驱动步进电机转动&#xff0c;表示开门&#xff0c;另一个…