正则表达式(Regular Expression)详解

news/2024/10/22 3:06:37/

一、简介

正则表达式(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/news/1439721.html

相关文章

【贪心算法】Leetcode 763. 划分字母区间【中等】

划分字母区间 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列…

关于uniapp编译小程序出现报错:Component “组件路径“ does not have a method “__e“ to handle event

首先不要怀疑官方的框架问题,如果框架有问题这么基础的早就修复了 解决方案: 检查自己的代码中,是否把methods放在了不正确的位置,正确的位置应该与data同位。检查父组件中的引用是否正确,components这个单词有没有写错,比如少写个s。检查小程序是否将项目编译设置…

OpenHarmony实战开发-减小应用包大小。

简介 减小应用包大小是提升应用下载、安装体验的重要方式之一。通过压缩、精简或者复用应用中的代码或资源,可以有效降低应用的大小,提升应用下载和安装速度,减少系统空间占用。 开发者可以参考下面三种方法减小应用包大小: 配…

《ElementPlus 与 ElementUI 差异集合》el-select 显示下拉列表在 Cesium 场景中无法监听关闭

前言 仅在 Element UI 时有此问题,Element Plus 由于内部结构差异较大,不存在此问题。详见《el-select 差异点,如:高、宽、body插入等》; 问题 点击空白处,下拉列表可监听并关闭;但在 Cesium…

14 Linux实操篇-进程管理

第十四章 Linux实操篇-进程管理(重点) 14.1 基本介绍 在 LINUX 中,每个执行的程序都称为一个进程。每一个进程都分配一个 ID 号(pid,进程号)。>windows > linux 每个进程都可能以两种方式存在的**。前台与后台**,所谓前台…

def iris_type(s);np.loadtxt;x, y = np.split;为什么进行切片;

目录 def iris_type(s): 字节字符串和字符串区别 data = np.loadtxt x, y = np.split 为什么进行切

docker入门级命令

基本概念 docker的连个基本概念:镜像、容器。 docker镜像可以理解为是存储docker安装包的地方,比如:mcr.microsoft.com/mssql/server:2017-latest是sqlserver的docker镜像。 可以通过docker pull命令拉取远程镜像到本地。比如:…

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

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