十个值得珍藏的正则表达式

news2025/7/9 12:10:23

正则表达式常学常忘,记规则不如记例子,记多不如记精,记例子就记最经典的。下面是本人珍藏的十个有用的正则表达式,不吝分享,以飨读者。

正则表达式要点

在这里插入图片描述
小括号:代表分组
中括号:代表集合
大括号:代表个数
注意:尖括号不是元字符

实例

下面以javascript语言为例,展示正则表达式的经典例子,基本覆盖了基本用法。

1. 多个空行变成单空行

经常遇到别人给的文本文件,里面出现多个空行,一般IDE格式化也无能为力,怎么办?正则表达式可以派上用场。

let lines = `
djaidjsia
lllds
daskldas
dasdlas




dasklda




kaskldsad
`
// str = lines.replace(/^(\s*\n){2,}/, "\n")
str = lines.replace(/^\s*[\r\n]|^\s+| +(?= )| +$|\s+$(?![^])/gm, '\n');
console.log(str)

在IntelliJ idea里可以运用上述表达式做全局替换。

2. 符合强度的密码

长度8到18位,至少1个字母,1个数字和1个特殊字符

/^(?=.\d)(?=.[a-z])(?=.[A-Z])(?=.[!@#KaTeX parse error: Expected group after '^' at position 1: ^̲&*()_-]).{8,18}/

在这里插入图片描述

3. 有效的身份证号码(十八位)

十八位的公民身份号码,排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

var pattern = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
console.log(p.test("11010519501130002X"));

4. 提取网页中所有超链接


(?i)<a([^>]+)>(.+?)</a>

说明:
?i表示大小写敏感,[^>]+表示匹配任何字符串,但不包含>

5. 匹配HTML标签

<("[^"]*"|'[^']*'|[^'">])*>

<	  	#start with opening tag "<"
 (		#   start of group #1
   "[^"]*"	#	only two double quotes are allow - "string"
   |		#	..or
   '[^']*'	#	only two single quotes are allow - 'string'
   |		#	..or
   [^'">]	#	cant contains one single quotes, double quotes and ">"
 )		#   end of group #1
 *		# 0 or more
>		#end with closing tag ">"
>

6. 匹配IP地址

^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.
([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$

7. 检查Email地址

\b[\w.!#$%&*+\/=?^`{|}~-]+@[\w-]+(?:\.[\w-]+)*\b

8. 不包含字符串

不包含hello:

var pattern = /^((?!hello).)*$/
console.log(pattern.test('abhellocba'))
console.log(pattern.test('abhellcba'))

不包含hello,也不包含world:

pattern = /^((?!hello)(?!world).)*$/
console.log(pattern.test('abhellocba'))
console.log(pattern.test('abhellcba'))

9. 检查中文和CJK字符(中日韩字符)

指定中文的unicode编码区间来匹配中文:

^[\\u4e00-\\u9fa5]{0,}$

检查CJK字符,采用:

([\u4e00-\u9fff]+|[\uff00-\uffef]+)

同理,还可以指定字符的unicode编码来匹配货币代码:

(?=.*\d+)(?=.*[\u00A5\uFFE5\uFFE1\u5713\uFF04\u20A4\u0024\u5186]+)

10. 匹配十六进制数

/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i

在这里插入图片描述

总结

太史公曰:正则表达式是程序员手中的利剑,能解决许多人生中不大不小的烦恼。不会正则表达式不足语编程。有这十个正则表达式防身,没人再敢欺负你。

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

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

相关文章

回归分析(1)-回归分析的基本概念

1.回归方程 由于x是可控的非随机变量&#xff0c; 而Y 是一个与x有关的随机变量&#xff0c;因此&#xff0c;直接研究变量Y与x之间的相关关系是困难的&#xff0e; 如果注意到随机变量Y的数学期望反映了随机变量Y的平均取值&#xff0c;因此&#xff0c; 可考虑研究EY与x之间的…

第六章 支持向量机

6.1 间隔与支持向量 给定一个训练样本集&#xff0c;分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平面。但是这个划分超平面也是很多的&#xff0c;如下图所示 直观上应该去找两类样本中最中间的划分超平面&#xff0c;因为该划分超平面对训练样本局部扰动…

与分类有关的一种时序优先现象

(A&#xff0c;B)---2*30*2---(1,0)(0,1) 用网络分类A和B&#xff0c;让A由两张图片组成&#xff08;0&#xff0c;0&#xff09;&#xff08;0&#xff0c;1&#xff09;&#xff0c;让B由两张图片组成&#xff08;1&#xff0c;0&#xff09;&#xff08;0&#xff0c;0&…

(附源码)计算机毕业设计JavaJava毕设项目租车网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

Ubuntu22.04:设置Samba服务

Samba服务可以实现在主机间共享文件与Windows的共享通用。 Ubuntu22.04可以按照如下步骤安装并开启Samba服务&#xff1a; 1.安装samba sudo apt install samba 2.创建一个用于共享的目录(路径和路径名可以自行决定&#xff09; mkdir samba 3.设置共享目录的访问权限 s…

Prometheus的remotewrite for java

1、增加参数重启prometheus 修改 prometheus启动参数 - "--enable-featureremote-write-receiver" 重启 prometheus 2、下载案例 GitHub - bprasen/remotewrite 3、迁移 将案例中的代码复制到springboot/springcloud中 pom中增加 <!-- prometheus remote writ…

Windows OpenGL 图像阴影

目录 一.OpenGL 图像阴影 1.原始图片2.效果演示 二.OpenGL 图像阴影源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL ES 学习…

【机器学习项目实战10例】(一):利用线性回归实现股票预测分析

💥 项目专栏:【机器学习项目实战10例】 文章目录 一、利用线性回归实现股票预测分析二、加载股票数据三、将数据进行标准化四、形成训练数据五、加载数据集六、构建线性回归模型七、精度测试八、网格搜索九、绘制结果一、利用线性回归实现股票预测分析 股价预测其实是一个较…

PyTorch深度强化学习中蒙特卡洛策略梯度法在短走廊环境(CartPole-v0)中的实战(超详细 附源码)

需要源码请点赞关注收藏后评论区留下QQ~~~ 一、策略梯度法 策略梯度法&#xff08;PG&#xff09;利用策略函数来选择动作&#xff0c;同时使用值函数来辅助策略函数参数的更新&#xff0c;根据策略类型的不同&#xff0c;可以分为随机策略梯度和确定性策略梯度 策略梯度法与…

1990-2021年全国各省城市化水平数据

1990-2021年全国各省城市化水平数据 1、包括&#xff1a;全国31省 2、时间&#xff1a;1990-2021年 3、指标包括&#xff1a;城镇常住人口数(万人)、常住人口数(万人)、城市化水平 4、指标衡量&#xff1a;城市化率本地区城镇人口/总人口 5、指标解释&#xff1a; 城市化…

C++ 语法基础课5 —— 字符串

文章目录1. 字符与整数的联系 —— ASCII码1.1 练习 — 统计数字和字母个数2. 字符数组(记得多\0)2.1 字符数组的输入输出2.2 字符数组的常用操作2.3 遍历字符数组中的字符3. 标准库类型 string3.1 定义和初始化3.2 string 上的操作3.2.1 string的读写3.2.2 使用getline读取一整…

操作系统之启动过程

本文参考MOOC哈工大操作系统课程&#xff0c;需要有一定的汇编基础 打开电源后&#xff0c;计算机做了什么 此时需要先运行的代码是BIOS x86 PC开机后CPU处于实模式&#xff0c;寻址方式为CS:IP&#xff08;CS左移4位IP&#xff09;开机时&#xff0c;初始化的CS0xFFFF&…

_linux 进程间通信(命名管道)

文章目录1. 创建一个命名管道2. 用命名管道实现server&client通信2.0 log.hpp打印日志信息2.1 comm.hpp(server.cc和client.cc共有文件)2.2 server.cc读取数据2.3 client.cc发送数据2.4 结果展示3. 还可以多个进程接收1. 创建一个命名管道 命名管道可以从命令行上创建&…

微服务介绍微服务环境搭建

一、微服务介绍 从互联网早起到现在&#xff0c;系统架构大体经历了下面几个过程: 单体应用架构--->垂直应用架构--->分布 式架构--->SOA架构--->微服务架构&#xff0c;当然还有悄然兴起的Service Mesh(服务网格化)。 微服务架构 微服务架构在某种程度上是面向…

机械原理复习试题及答案

机械原理 一、填空题&#xff1a; 1.机构具有确定运动的条件是机构的自由度数等于 。 2.同一构件上各点的速度多边形必 于对应点位置组成的多边形。 3.在转子平衡问题中&#xff0c;偏心质量产生的惯性力可以用 相对地表示。 4.机械系统的等效力学模型是具有 &#xff0c;其上作…

Word文档中经常会遇到字体间距突然变得很大,怎么处理?

Word文档中经常会遇到字体间距突然变得很大&#xff0c;怎么处理&#xff1f; 目录 Word文档中经常会遇到字体间距突然变得很大&#xff0c;怎么处理&#xff1f; 1、如下图字体间距突然变大。 可能原因一&#xff1a; 1、选中该段文字&#xff0c;鼠标右键选择【段落 】 …

【882. 细分图中的可到达节点】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个无向图&#xff08;原始图&#xff09;&#xff0c;图中有 n 个节点&#xff0c;编号从 0 到 n - 1 。你决定将图中的每条边 细分 为一条节点链&#xff0c;每条边之间的新节点数各不相同。 图…

进程替换与复制

目录进程替换基础知识什么是进程替换进程替换函数函数使用execlexeclpexecleexecvexecvpexecve进程替换基础知识 什么是进程替换 进程替换&#xff1a;把当前进程换为其他进程执行。&#xff08;其他进程&#xff1a;创建新进程&#xff0c;生成可执行程序&#xff0c;装在进…

Android 13 Wi-Fi状态机流程及Log分析

本文基于Android 13源码解读,对Wi-Fi状态机调用流程进行梳理,并结合Log进行分析,便于大家理解Wi-Fi模块调用流程。 梳理出Wi-Fi状态机共有如下几种状态: mConnectableState mConnectingOrConnectedState mL2ConnectingState mL2ConnectedState mL3ProvisioningState …

【机器学习项目实战10例目录】项目详解 + 数据集 + 完整源码

前言 大家好&#xff0c;我是阿光。 本专栏整理了《机器学习项目实战10例》&#xff0c;内包含了各种不同的入门级机器学习项目&#xff0c;包含项目原理以及源码&#xff0c;每一个项目实例都附带有完整的代码数据集。 正在更新中~ ✨ &#x1f6a8; 我的项目环境&#xff…