JavaScript正则表达式解析:模式、方法与实战案例

目录

一、什么是正则表达式

1.创建正则表达式

2.标志(Flags)

3.基本模式

(1)字符匹配

(2)位置匹配

(3)数量匹配

二、常用的正则表达式方法和属性

1.test()‌

2.match()‌

3.exec()‌

4‌.replace()‌

5.search()‌

6‌.split()‌

三、常见的正则表达案例

1.验证手机号码

2.验证邮箱

3.验证身份证号码

4.验证银行卡号码

5.验证密码

6.验证日期格式

四、线上正则表达式测试或生成器工具


文章前提:涵盖了正则表达式的关键要素。模式,即正则表达式的语法和规则;方法,即如何在JavaScript中使用正则表达式进行匹配、搜索、替换等操作;一些实战案例,通过具体示例展示正则表达式的应用;介绍两个线上正则表达式测试和生成器工具。

一、什么是正则表达式

‌JavaScript正则表达式‌是一种用于匹配字符串中字符组合的模式。通过一种简洁的语法,可以执行复杂的字符串搜索、替换等操作。

1.创建正则表达式

字面量语法使用双斜杠包裹一个匹配模式,/正则表达式主体/修饰符(可选)

var pattern1 = /hello/i;

// /hello/i是一个正则表达式

// hello是一个正则表达式主体,用于检索

// i  是一个修饰符

构造函数语法使用new RegExp(pattern, flags)的方式创建一个正则表达式对象。

var pattern2 = new RegExp("world");

2.标志(Flags)

g:全局搜索。

i:不区分大小写。

m:多行搜索。

s:允许 . 匹配换行符。

u:Unicode 完全匹配。

y:粘性搜索,匹配从目标字符串的当前位置开始。

3.基本模式

正则表达式的语法包括字符匹配、位置匹配、数量匹配等。

(1)字符匹配

.:匹配除换行符以外的任意单个字符。

[]:字符集,匹配方括号中的任意一个字符。例如,[abc]匹配a、b或c。使用连字符-可以表示字符范围,如[a-z]匹配所有小写字母。

^:在字符集开头时表示否定字符集。例如,[^abc]匹配除了a、b、c之外的任意字符。

\d:匹配任意一个数字字符,等价于[0-9]。

\w:匹配任意一个字母、数字或下划线,等价于[A-Za-z0-9_]。

\s:匹配任意一个空白符,包括空格、制表符等。

(2)位置匹配

^:匹配字符串的开始位置。

$:匹配字符串的结束位置。

(3)数量匹配

*:匹配前面的元素零次或多次。例如,a*匹配零个或多个a。

+:匹配前面的元素至少一次。例如,a+匹配一个或多个a。

?:匹配前面的元素零次或一次。例如,a?匹配零个或一个a。

{n}:精确匹配前面的元素n次。例如,a{3}匹配三个a。

{n,}:匹配前面的元素至少n次。

{n,m}:匹配前面的元素至少n次,但不超过m次。

二、常用的正则表达式方法和属性

1.test()

用于测试字符串是否符合正则表达式的规则,返回truefalse

const regex = /World/;
const str = "Hello World";
console.log(regex.test(str)); // true

const str2 = "Hello";
console.log(regex.test(str2)); // false

2.match()

返回字符串中所有匹配正则表达式的结果,如果没有匹配,返回null

const regex2 = /\d+/g; // 全局匹配数字
const str12 = "There are 123 apples and 456 oranges.";
const matches = str12.match(regex2);

console.log(matches); // 输出: ["123", "456"]

3.exec()‌

获取正则表达式匹配的片段,返回一个数组,包含匹配的字符串和匹配信息。如果没有匹配,返回null

const regex3 = /(\d{4})-(\d{2})-(\d{2})/;
const str3 = "Today's date is 2023-10-05.";
const result = regex3.exec(str3);

if (result) {
    console.log(result[0]); // 完整匹配: "2023-10-05"
    console.log(result[1]); // 第一个捕获组: "2023"
    console.log(result[2]); // 第二个捕获组: "10"
    console.log(result[3]); // 第三个捕获组: "05"
} else {
    console.log("没有找到匹配的片段");
}

4‌.replace()

用于在字符串中用一些字符串替换另一些字符串,或替换一个与正则表达式匹配的子串。

const regex4 = /apple/gi; // 全局匹配,忽略大小写
const str4 = "I have 2 apples, 3 bananas, and 1 pear.";
const replaced = str4.replace(regex4, "orange");
console.log(replaced); // 输出: "I have 2 oranges, 3 bananas, and 1 pear."

// 使用替换函数
const newStr = str4.replace(/(\d+)/g, (match, p1) => parseInt(p1) * 2);
console.log(newStr); // 输出: "I have 4 oranges, 6 bananas, and 2 pear."

5.search()

用于检索字符串中指定的子字符串,或与正则表达式相匹配的子字符串,并返回子串的起始位置。

const str5 = "Hello, world!";
const index = str5.search(/world/);
console.log(index); // 输出: 7

6‌.split()

根据给定的正则表达式将字符串分割成子串,然后将结果作为字符串数组返回。

const str6 = "apple,orange,banana,pear";
const fruits = str6.split(/,/);

console.log(fruits); // 输出: ["apple", "orange", "banana", "pear"]

三、常见的正则表达案例

1.验证手机号码

const phoneRegex = /^1[3-9]\d{9}$/;

2.验证邮箱

const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;

3.验证身份证号码

const idCardRegex = /^\d{17}[\d|x|X]$/;

4.验证银行卡号码

const bankCardRegex = /^\d{16,19}$/;

5.验证密码

// 密码可以包含数字、大小写字母和特殊字符,并且长度至少为8个字符

const passwordRegex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$/;

6.验证日期格式

const dateRegex = /^\d{4}-\d{2}-\d{2}$/;

四、线上正则表达式测试或生成器工具

1.正则表达式在线测试 | 菜鸟工具  https://www.jyshare.com/front-end/854/https://www.jyshare.com/front-end/854/https://www.jyshare.com/front-end/854/

2.正则表达式生成器,常用正则表达式在线生成

正则表达式生成器,常用正则表达式在线生成https://www.sojson.com/regex/generatehttps://www.sojson.com/regex/generate

记录

若文章对你有帮助,点赞、收藏加关注吧!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

日历热力图,月度数据可视化图表(日活跃图、格子图)vue组件

日历热力图,月度数据可视化图表,vue组件 先看效果👇 在线体验https://www.guetzjb.cn/calanderViewGraph/ 日历图简单划分为近一年时间,开始时间是 上一年的今天,例如2024/01/01 —— 2025/01/01,跨度刚…

【Linux】常见指令(三)

Linux常见指令 01.nano02.cat03.cp04.mv 我的Linux专栏:【Linux】 本节Linux指令讲解的基本框架如下: 大家可以根据自己的需求,自行进行跳转和学习! 01.nano nano Linux 系统中一款简单易用的命令行文本编辑器,适合…

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证6)

重新创建WebApi项目,安装Microsoft.AspNetCore.Authentication.JwtBearer包,将之前JwtBearer测试项目中的初始化函数,jwt配置类、token生成类全部挪到项目中。   重新编写login函数,之前测试Cookie和Session认证时用的函数适合m…

图解Git——分布式Git《Pro Git》

分布式工作流程 Centralized Workflow(集中式工作流) 所有开发者都与同一个中央仓库同步代码,每个人通过拉取、提交来合作。如果两个开发者同时修改了相同的文件,后一个开发者必须在推送之前合并其他人的更改。 Integration-Mana…

小白爬虫——selenium入门超详细教程

目录 一、selenium简介 二、环境安装 2.1、安装Selenium 2.2、浏览器驱动安装 三、基本操作 3.1、对页面进行操作 3.1.1、初始化webdriver 3.1.2、打开网页 3.1.3、页面操作 3.1.4、页面数据提取 3.1.5、关闭页面 ?3.1.6、综合小案例 3.2、对页面元素进行操作 3…

Flutter鸿蒙化中的Plugin

Flutter鸿蒙化中的Plugin 前言鸿蒙项目内PluginFlutter端实现鸿蒙端实现创建Plugin的插件类注册Plugin 开发纯Dart的package为现有插件项目添加ohos平台支持创建插件配置插件编写插件内容 参考资料 前言 大家知道Flutter和鸿蒙通信方式和Flutter和其他平台通信方式都是一样的&…

【Docker】搭建一个功能强大的自托管虚拟浏览器 - n.eko

前言 本教程基于群晖的NAS设备DS423的docker功能进行搭建,DSM版本为 DSM 7.2.2-72806 Update 2。 n.eko 支持多种类型浏览器在其虚拟环境中运行,本次教程使用 Chromium​ 浏览器镜像进行演示,支持访问内网设备和公网地址。 简介 n.eko 是…

AIGC视频生成国产之光:ByteDance的PixelDance模型

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍ByteDance的视频生成模型PixelDance,论文于2023年11月发布,模型上线于2024年9月,同时期上线的模型还有Seaweed&…

《keras 3 内卷神经网络》

keras 3 内卷神经网络 作者:Aritra Roy Gosthipaty 创建日期:2021/07/25 最后修改时间:2021/07/25 描述:深入研究特定于位置和通道无关的“内卷”内核。 (i) 此示例使用 Keras 3 在 Colab 中查看 GitHub …

【json_object】mysql中json_object函数过长,显示不全

问题:json只显示部分 解决: SET GLOBAL group_concat_max_len 1000000; -- 设置为1MB,根据需要调整如果当前在navicat上修改,只有效本次连接和后续会话,重新连接还是会恢复默认值1024 在my.ini配置文件中新增或者修…

云消息队列 Kafka 版 V3 系列荣获信通院“云原生技术创新标杆案例”

2024 年 12 月 24 日,由中国信息通信研究院(以下简称“中国信通院”)主办的“2025 中国信通院深度观察报告会:算力互联网分论坛”,在北京隆重召开。本次论坛以“算力互联网 新质生产力”为主题,全面展示中国…

2024 年度学习总结

目录 1. 前言 2. csdn 对于我的意义 3. 写博客的初衷 3.1 现在的想法 4. 写博客的意义 5. 关于生活和博客创作 5.1 写博客较于纸质笔记的优势 6. 致 2025 1. 前言 不知不觉, 来到 csdn 已经快一年了, 在这一年中, 我通过 csdn 学习到了很多知识, 结识了很多的良师益友…

Spring Boot自动配置原理:如何实现零配置启动

引言 在现代软件开发中,Spring 框架已经成为 Java 开发领域不可或缺的一部分。而 Spring Boot 的出现,更是为 Spring 应用的开发带来了革命性的变化。Spring Boot 的核心优势之一就是它的“自动配置”能力,它极大地简化了 Spring 应用的配置…

1.2.神经网络基础

目录 1.2.神经网络基础 1.2.1.Logistic回归 1.2.2 梯度下降算法 1.2.3 导数 1.2.4 向量化编程 1.2.5 正向传播与反向传播 1.2.6.练习 1.2.神经网络基础 1.2.1.Logistic回归 1.2.1.1.Logistic回归 逻辑回归是一个主要用于二分分类类的算法。那么逻辑回归是给定一个x ,…

Matlab总提示内存不够用,明明小于电脑内存

目录 前言情况1(改matlab最大内存限制)情况2(重启电脑)情况3 前言 在使用matlab中,有时候需要占用的内存并没有超过电脑内存依旧会报错,提示内存不够用,可以尝试下面几种方法,总有一…

使用AI生成金融时间序列数据:解决股市场的数据稀缺问题并提升信噪比

“GENERATIVE MODELS FOR FINANCIAL TIME SERIES DATA: ENHANCING SIGNAL-TO-NOISE RATIO AND ADDRESSING DATA SCARCITY IN A-SHARE MARKET” 论文地址:https://arxiv.org/pdf/2501.00063 摘要 金融领域面临的数据稀缺与低信噪比问题,限制了深度学习在…

深入解析人工智能中的协同过滤算法及其在推荐系统中的应用与优化

目录 什么是协同过滤算法核心原理基本步骤相似度计算代码实现详解1.流程图2.创建基础的数据结构存储用户评分数据3.计算用户相似度4.获取相似用户5.推荐方法 算法优化建议1. 数据预处理优化去除异常值和噪声数据进行数据标准化使用稀疏矩阵优化存储 2. 相似度计算优化使用局部敏…

react install

react 安装 React 是一个用于构建用户界面的 JavaScript 库。以下是安装 React 的步骤: 使用 Create React App Create React App 是一个官方支持的命令行工具,用于快速搭建 React 应用。 安装 Node.js 和 npm 确保你的计算机上安装了 Node.js 和 npm…

程序员不可能不知道的常见锁策略

前面我们学习过线程不安全问题,我们通过给代码加锁来解决线程不安全问题,在生活中我们也知道有很多种类型的锁,同时在代码的世界当中,也对应着很多类型的锁,今天我们对锁一探究竟! 1. 常见的锁策略 注意: …

智启未来,AI筑梦科技新星”------华清远见成都中心2025冬令营圆满结束

2025年1月11日-16日,华清远见成都中心为期6天的“智启未来,AI筑梦科技新星”2025冬令营活动圆满结束。此次活动吸引了众多对人工智能和无人驾驶技术充满热情的学生参与,共同开启了一段点燃科技梦想的精彩旅程。 报道接待 以AI无人驾驶小车为核…