正则表达式(Regular Expression)详解

server/2024/10/20 22:18:54/

一、简介

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母、数字)和特殊字符(\、?、[等),可以用来描述和匹配字符串的特定模式。正则表达式提供了一种灵活且强大的方式来查找、替换、验证和提取文本数据。

二、正则表达式的字符详解

1、字面符号(普通字符)

  • 字母和数字:表示它们本身,例如所有的字母(包含大小写)和数字;
  • 空格:表示空格字符;
  • 标点符号:表示标点符号本身,例如 !,

2、特殊字符

(1) 量词

  • . : 匹配任意单个字符,除了换行符。
  • *:匹配前一个表达式零次或多次。
  • +:匹配前一个表达式一次或多次。
  • ?:匹配前一个表达式零次或一次。
  • {n}:匹配前一个表达式恰好 n 次。
  • {n,}:匹配前一个表达式至少 n 次。
  • {n,m}:匹配前一个表达式至少 n 次,最多 m 次。

(2) 边界符号

  • ^: 匹配以什么字符串开头。
  • $: 匹配以什么字符串结尾。
  • \b:
  • \B

(3) 转义字符 \

有时候在我们查找 . 或者 * 等特殊字符的时候,会有一些问题出现,因为这些字符已经变成特殊字符具有特殊含义,所以我们没有办法指定这些特殊字符。当出现这种情况,我们就得使用\来取消这些字符的特殊意义,这就叫转义。所以,我们应该使用 \. 和\*。当然,要查找\本身,你也得用\\

(4) 字符类

表达式含义
\d匹配数字
\w匹配字符
\s匹配空格
\D匹配非数字
\W匹配非字符
\S匹配非空格

(5) 其他特殊字符

表达式含义
[]字符类,匹配方括号内的任意一个字符。
|逻辑或操作符,匹配两个表达式中的任意一个。
()分组,用于将多个表达式组合为一个整体。

三、实践

1、手机号码

手机号码通常以(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])其中的一个开头,总共11位,即如下:

^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$

2、16进制

0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
允不允许以0头

  • 不允许

^[123456789ABCDEFabcdef][0123456789ABCDEFabcdef]*
或者
^[1-9A-Fa-f][0-9A-Fa-f]*

  • 允许

[0123456789ABCDEFabcdef]+

3、2进制

允不允许以0头

  • 不允许

^1[01]*

  • 允许

[01]+


http://www.ppmy.cn/server/19049.html

相关文章

Docker 容器创建与使用问题汇总

目录 常用命令 Docker 18.09 Error response from daemon: Container is not running unknown flag: --gpus CUDA error: "cudaSetDevice(device_)" Docker 19.03 容器创建时指定GPU,执行 nvidia-smi 命令只显示指定的显卡 容器创建时指定GPU&…

[Flutter3] Json转dart模型举例

记录一下 Android studio plugin -> FlutterJsonBeanFactory 处理json转dart 模型 案例 json字符串, 一个 response的data返回数据 {"code":1,"msg":"\u64cd\u4f5c\u6210\u529f","data":{"list":{"id":"8…

PostgreSQL的扩展(extensions)-常用的扩展之pg_repack

PostgreSQL的扩展(extensions)-常用的扩展之pg_repack pg_repack 是一款非常有用的 PostgreSQL 扩展工具,它能够重新打包(repack)表和索引以回收空间并减少碎片,而且在这个过程中不会锁定表,允…

异地多活是什么

异地多活(Geographically Distributed Active-Active)是一种技术架构,用于增强系统的可用性和容错性。它是一种分布式系统设计的策略,可以让应用程序在多个地理位置同时活动,并提供实时数据同步和故障切换能力。 主要…

15 数据库与缓存的扩展升级与扣减返还

在本讲里,将会对扣减中涉及的两个公共话题进行讨论,分别是异步任务的设计和扣减中的返还的设计。 在“第 14 讲”和“第 9 讲”里,均使用了异步任务(Worker)来做无状态存储到正式业务库的数据同步。但关于具体如何设计…

vue elementui select 修改弹框多选框回显成功,但却无法选中问题

原因 下拉框数据是循环别的接口得来的&#xff0c;因为数据层次太多&#xff0c;render函数没有自动更新&#xff0c;需手动强制刷 出现问题的原因&#xff1a; 下拉框数据是通过别的接口得来的&#xff0c;render函数没有检测到&#xff0c;所以需要手动强制刷新 <el-sele…

基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ....................................................................... %对水印进行置乱…

R基本的数据管理

一&#xff0c;创建变量 创建一个数据框 > myData<-data.frame(x1c(1,2,3,4,5,6),x2c(6,5,67,8,9,0)) > myDatax1 x2 1 1 6 2 2 5 3 3 67 4 4 8 5 5 9 6 6 0增加一列为两者的和 > myData$sum<-myData$x1myData$x2 > myDatax1 x2 sum 1 1 6 …