09-JavaScript 正则表达式

1. 正则表达式简介

1.1 什么是正则表达式

正则表达式:用于匹配规律规则的表达式,正则表达式最初是科学家对人类神经系统的工作原理的早期研究,现在在编程语言中有广泛的应用。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。 正则表达式(Regular Expression)是一种描述字符模式的对象。JavaScript中的RegExp类表示正则表达式,String和RegExp类型都定义了使用正则的方法,后者使用正则表达式进行强大的模式匹配和文本检索与替换功能。

1.2 正则表达式的作用

  1. 给定的字符串是否符合正则表达式的过滤逻辑(匹配)

  2. 可以通过正则表达式,从字符串中获取我们想要的特定部分(提取)

  3. 强大的字符串替换能力(替换)

    提示:对于复杂的正则表达式不用过多研究,在工作都是写好复制的,但是要求根据需求使用正则表达式。

1.3 正则表达式的检测工具

  • 在线测试正则

2. 正则表达式的使用

JavaScript中的正则表达式用RegExp类型的对象表示。我们可以通过RegExp()构造函数来创建RegExp对象,也可以通过直接量语法来创建。

2.1 创建正则对象

2.1.1 方式1:直接量
var pattern = /book/;
2.1.2 方式2:构造函数
var pattern = new RegExp(/book/);
2.4 参数(匹配的模式)
标志说明
i忽略大小写
g全局匹配
gi全局匹配+忽略大小写
m多行匹配
2.1.3 测试正则表达式

test() 正则对象方法,用于检测字符串是否符合该规则,该对象会返回 true 或 false,其参数是测试字符串。

var reg = /123/;
console.log(reg.test(123));//匹配字符中是否出现123  出现结果为true
console.log(reg.test('abc'));//匹配字符中是否出现123 未出现结果为false

exec() 方法用于检索字符串中的正则表达式的匹配。如果字符串中有匹配的值返回该匹配值,否则返回 null。

 var str1 = 'abc abi hht yyo Abk';// 全局
var reg2 = /ab/gi;
console.log(reg2.exec(str1));
// lastIndex:是正则表达式的下一次查找的开始的下标,可以进行读取和修改
console.log(reg2.lastIndex);
console.log(reg2.exec(str1));
console.log(reg2.exec(str1));

3. 正则表达式的组成

  • 普通字符abc 123

  • 特殊字符:正则表达式中有特殊意义的字符

3.1 边界符

正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符--精确匹配

边界符说明
^表示匹配行首的文本(以谁开始)
$表示匹配行尾的文本(以谁结束)
var rg = /abc/; // 只要包含有abc这个字符串返回的都是true
var reg = /^abc/;//开头为abc
var reg1 = /^abc$/; // 精确匹配 要求必须是 abc字符串才符合规范

3.2 [] 中括号

有一系列字符用中括号括起来,表示匹配其中的任一字符,多选一

var reg1 = /[abc]/; // 只要包含有a 或者 包含有b 或者包含有c 
var reg2 = /^[a-z]$/; // 26个英文字母任何一个字母返回 true  - 表示的是a 到z 的范围 
var reg3 = /^[^a-zA-Z0-9_-]$/; //如果中括号里面有^ 表示取反的意思 千万和 我们边界符 ^ 别混淆

3.3 量词符

量词符用来设定某个模式出现的次数。

量词说明
*出现0次或更多次
+出现1次或更多次
?出现0次或1次
{n}出现n次
{n,}出现n次或更多次
{n,m}出现n到m次

括号总结

元字符说明
{}大括号量词符. 里面表示重复次数
[]中括号匹配方括号中的任意字符.
()小括号表示优先级

3.4 元字符类

预定义类指的是某些常见模式的简写方式.

元字符说明
\d匹配数字,任何ASCII数字,等价于[0-9]匹配一个数字
\D匹配任意非数字的字符,除了ASCII数字之外的任何字符,等价于[^0-9]
\w匹配字母或数字或下划线,等价于[a-zA-Z0-9_]
\W匹配任意不是字母,数字,下划线,等价于[^a-zA-Z0-9_]
\s匹配任意的空白符[\t\r\n\v\f] 空格(‘ ’)、换页(‘\f’)、换行(‘\n’)、回车(‘\r’)、水平制表符(‘\t’)、垂直制表符(‘\v’)
\S匹配任意不是空白符的字符[^\t\r\n\v\f]
.匹配除换行符和行结束符以外的任意单个字符
|或者,选择两者中的一个。将左右两边分为两部分,而不管左右两边有多长多乱
\.将特殊字符转义成(.)当成普通字符.

3.5 案例

用户名:

 /^\w{5,20}$/

验证手机号:

/^1[3|4|5|7|8]\d{9}$/

验证邮箱 xxx@qq.com:

/\w+@\w+\.\w+(\.\w+)?/

验证密码:

/^[a-zA-Z0-9_-]{6,16}$/

4. 正则提取

String对象的match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。返回值是存放匹配结果的数组。该数组的内容依赖于RegExp 是否具有全局标志 g。

//1. 提取email地址
var str = "123123@qq.com,ziyuanyihe@163.cn 87666444@qq.com englishtown.com 222669312@qq.com...";
var array = str.match(/\w+@\w+\.\w+(\.\w+)?/g);
console.log(array);

5. 正则替换和查询

var str = "abc,efg,123,abc,123,a";
​
console.log(str.search(/a/));
console.log(str.replace(/,|,/g, '.'));

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

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

相关文章

03-JAVA设计模式-建造者模式

建造者模式 什么是建造者模式 建造者模式(Builder Pattern)是一种对象构建的设计模式,它允许你通过一步一步地构建一个复杂对象,来隐藏复杂对象的创建细节。 这种模式将一个复杂对象的构建过程与其表示过程分离,使得…

大语言模型上下文窗口初探(下)

由于篇幅原因,本文分为上下两篇,上篇主要讲解上下文窗口的概念、在LLM中的重要性,下篇主要讲解长文本能否成为LLM的护城河、国外大厂对长文本的态度。 3、长文本是护城河吗? 毫无疑问,Kimi从一开始就用“长文本”占领…

力扣 583. 两个字符串的删除操作

题目来源:https://leetcode.cn/problems/delete-operation-for-two-strings/description/ C题解1:动态规划 寻找word1和word2拥有的公共最长子序列,之后分别对word1和word2进行删除操作,即可使word1和word2相等。 寻找公共最长子…

【视频转码】基于ZLMediakit的视频转码技术概述(1)

接上一条: zlmediakit pro版本解析 新增多个分支版本,版本如下: codec版本 支持基于ffmpeg的转码能力,在开源版本强大功能的基础,是开源ZLMediakit的超集,新增支持如下能力: 1、音视频间任…

【引子】C++从介绍到HelloWorld

C从介绍到HelloWorld 一、C的介绍1. 简介2. 应用场景3. C的标准![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e3efb0f207f647729b92c0b5bcd4b330.png)4. C的运行过程 二、Visual Studio的安装1. 什么是Visual Studio2. Visual Studio的安装 三、完成HelloWorld1.…

Windows系统C盘空间优化进阶:磁盘清理与Docker日志管理

Windows系统C盘空间优化进阶:磁盘清理与Docker日志管理 文章目录 Windows系统C盘空间优化进阶:磁盘清理与Docker日志管理磁盘清理工具 使用“运行”命令访问磁盘清理利用存储感知自动管理空间清理WinSxS文件夹结合手动清理策略 小结删除临时文件总结&…

2024新版PHP在线客服系统多商户AI智能在线客服系统源码机器人自动回复即时通讯聊天系统源码PC+H5

搭建环境: 服务器 CPU 2核心 ↑ 运存 2G ↑ 宽带 5M ↑ 服务器操作系统 Linux Centos7.6-7.9 ↑ 运行环境: 宝塔面板 Nginx1.18- 1.22 PHP 7.1-7.3 MYSQL 5.6 -5.7 朵米客服系统是一款全功能的客户服务解决方案,提供多渠道支持…

html5分步问卷调查表模板源码

文章目录 1.设计来源1.1 问卷调查11.2 问卷调查21.3 问卷调查31.4 问卷调查41.5 问卷调查51.6 问卷调查6 2.效果和源码2.1 完整效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/137454703 html5分…

MongoDB数据库服务

pom.xml依赖 在spring构造页面时添加Spring Data MongoDB选项 或者手动添加依赖库 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> 配置 修改 sr…

深入浅出 -- 系统架构之负载均衡Nginx的性能优化

一、Nginx性能优化 到这里文章的篇幅较长了&#xff0c;最后再来聊一下关于Nginx的性能优化&#xff0c;主要就简单说说收益最高的几个优化项&#xff0c;在这块就不再展开叙述了&#xff0c;毕竟影响性能都有多方面原因导致的&#xff0c;比如网络、服务器硬件、操作系统、后端…

simulink 的stm32 ADC模块输出在抽筋,不知为何

% outtypecast(uint16(1000),uint8) % 10003E8,E8232,out232 3 function [y,len] myfcn(u1) headuint8([255 85]);%帧头 out1typecast(uint16(u1),uint8); % out2typecast(uint16(u2),uint8); y[head,out1]; lenuint16(length(y)); 2023b版本&#xff0c;stm32硬件支持…

Azure runbook 使用用户托管标识查看资源状态

Azure runbook 使用用户托管标识查看资源状态 在托管标识里创建用户托管标识在被查看或变更资源进行授权创建自动化账号和runbook发布脚本添加计划 在托管标识里创建用户托管标识 在被查看或变更资源进行授权 这里是选取的Analysis Services 资源 创建自动化账号和runbook 发布…

【python】Flask Web框架

文章目录 WSGI(Web服务器网关接口)示例Web应用程序Web框架Flask框架创建项目安装Flask创建一个基本的 Flask 应用程序调试模式路由添加变量构造URLHTTP方法静态文件模板—— Jinja2模板文件(Template File)<

探索K-近邻算法(KNN):原理、实践应用与文本分类实战

第一部分&#xff1a;引言与背景 KNN算法在机器学习领域的重要性及其地位 KNN算法作为机器学习中的基石之一&#xff0c;由于其概念直观、易于理解并且不需要复杂的模型训练过程&#xff0c;被广泛应用于多种场景。它在监督学习中占据着特殊的位置&#xff0c;尤其适用于实时…

Hive SchemaTool 命令详解

Hive schematool 是 hive 自带的管理 schema 的相关工具。 列出详细说明 schematool -help直接输入 schematool 或者schematool -help 输出结果如下&#xff1a; usage: schemaTool-alterCatalog <arg> Alter a catalog, requires--catalogLocation an…

【云开发笔记NO.25】缓存和技术中台

在云开发领域中&#xff0c;缓存技术是一项至关重要的技术&#xff0c;它具有多个特征和广泛的应用。缓存技术的核心原理是将经常访问或需要快速响应的数据存储在更接近用户或请求源的地方&#xff0c;以便能够更快地提供这些数据&#xff0c;减少对原始数据源&#xff08;如数…

【C#】读取指定XML节点

&#x1f4f0;XML文件 <?xml version"1.0" encoding"utf-8"?> <configuration><userSettings><Internal.Settings type"Desktop"><setting name"StatsDisplayCount" serializeAs"String">…

【算法基础】基于异或的排序、基于异或的经典面试题

文章目录 1. 传统交换2. 异或与异或的规律3. 基于异或的排序4. 需要注意的地方5. 经典面试题15.1 题目5.2 思路5.3 实现 6. 经典面试题26.1 题目6.2 思路6.3 实现 1. 传统交换 传统交换方法如下&#xff1a; def swap(i, j):tmp ii jj tmp通过开辟一个额外的变量空间&…

海量智库 | ANY权限原理介绍

ANY权限是Vastbase中的一种特殊的管理权限&#xff0c;用户能够通过ANY权限执行更广泛的操作&#xff0c;更加便利的管理数据库。 本文将为您介绍ANY权限管理的相关原理。 ANY权限管理相关解释 ANY权限管理&#xff0c;是对数据库内的某一类对象的所有实体进行特定的权限管理…

SQLite 4.9的 OS 接口或“VFS”(十三)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite字节码引擎&#xff08;十二&#xff09; 下一篇:SQLite 4.9的虚拟表机制(十四) 1. 引言 本文介绍了 SQLite OS 可移植性层或“VFS” - 模块位于 SQLite 实现堆栈底部 提供跨操作系统的可移植性。 VFS是Virtual File…