Js:正则表达式及其方法

news2025/1/18 9:19:40

一、正则表达式的介绍:

1、含义:

正则表达式用来定义一个规则,是Js中的一个对象。

2、作用:

① 计算机可以检查一个字符串是否符合规则

② 将字符串中符合规则的内容进行提取

二、正则表达式的创建:

1、 通过构造函数创建:new RegExp(规则, 标识)

标识 / 匹配模式:

(1)匹配模式的数据类型:字符串
(2)匹配模式取值:
i:忽略大小写
g:全局匹配模式

var reg = new RegExp('a','i');
consoole.log(reg)  // /a/i

② 使用场景:动态创建规则

③ 注意事项:

当使用转义字符(\)的时候,需要写两个 \\

var reg = new RegExp('\\w','i');
consoole.log(reg)  // /\w/i

2、 字面量创建:var 变量 = /规则/标识

var reg = /a/i ;
consoole.log(reg)  // /a/i

三、正则表达式的语法:

1、 的表示:

| :表示整体的或

// 匹配ab或c或de的字符串
let reg = /ab|c|de/;
let str = 'c'
let result = reg.test(str)
console.log(result) // true

[] :表示字符集 – 只要有某个字符就行

// 匹配任意包含a或b或c或d的字符串
let reg = /[abcd]/;
let str = 'cd'
let result = reg.test(str)
console.log(result) // true

2、 任意的小写字母:

[a-z]

// 匹配任意包含a到z之间的内容
let reg = /[a-z]/;
let str = 'c'
let result = reg.test(str)
console.log(result) // true

/[a-z]/i

// 匹配任意忽略大小写的包含a到z之间的内容
let reg = /[a-z]/i;
let str = 'H'
let result = reg.test(str)
console.log(result) // true

2、 任意的大写字母:

[A-Z]

// 匹配任意包含A到Z之间的内容
let reg = /[A-Z]/;
let str = 'c'
let result = reg.test(str)
console.log(result) // false

/[A-Z]/i

// 匹配任意忽略大小写的包含A到Z之间的内容
let reg = /[A-Z]/i;
let str = 'c'
let result = reg.test(str)
console.log(result) // true

3、 任意字母:[a-zA-Z]

// 匹配任意字母
let reg = /[a-zA-Z]/;
let str = 'cfff'
let result = reg.test(str)
console.log(result) // true

4、任意数字:

[0-9]

// 匹配任意数字
let reg = /[0-9]/;
let str = '123'
let result = reg.test(str)
console.log(result) // true

\d

// 匹配任意除了0到9之外的内容
let reg = /\d/;
let str = 'cd123d'
let result = reg.test(str)
console.log(result) // true

5、除了XXX:[^ ]

// 匹配任意除了包含a或b之外的内容
let reg = /^[abb]/;
let str = 'bc'
let result = reg.test(str)
console.log(result) // true

6、匹配除了数字之外的:

[^0-9]

// 匹配任意除了0到9之外的内容
let reg = /[^0-9]/;
let str = '111ccc'
let result = reg.test(str)
console.log(result) // true

\D

// 匹配任意除了0到9之外的内容
let reg = /\D/;
let str = '111ccc'
let result = reg.test(str)
console.log(result) // true

7、除了换行符之外的任意字符:.

// 匹配除了换行符之外的任意字符
let reg = /./;
let str = '\n'
let result = reg.test(str)
console.log(result) // false

8、转义字符:\

// 匹配.
let reg = /\./;
let str = 'ab.c'
let result = reg.test(str)
console.log(result) // true

9、匹配任意的字母、数字、下划线:

\w

let reg = /\w/;
let str = '&111&'
let result = reg.test(str)
console.log(result) // true

[A-z0-9_]

let reg = /[A-z0-9_]/;
let str = '&111&'
let result = reg.test(str)
console.log(result) // true

10、匹配除了任意的字母、数字、下划线之外的任意内容:

\W

let reg = /\W/;
let str = '11sA!'
let result = reg.test(str)
console.log(result) // true

[^A-z0-9_]

let reg = /[^A-z0-9_]/;
let str = '11sA!'
let result = reg.test(str)
console.log(result) // true

11、匹配空格:\s

let reg = /\s/;
let str = '   11sA   '
let result = reg.test(str)
console.log(result) // true

12、除了空格之外的任意内容:\S

let reg = /\S/;
let str = '  aa'
let result = reg.test(str)
console.log(result) // true

13、单词边界的任意内容:\b

① 单词边界含义:单词左右两边和非单词的位置,同类无界。

② 作用:用来精准的匹配单词

let reg = /\bchild\b/;
let str = 'children'
let result = reg.test(str)
console.log(result) // false

14、除了单词边界之外的任意内容:\B

① 非单词边界含义:单词内部的字符之间的位置。

② 使用:

// 非单词边界处的“cat”
let reg = /\Bcat\B/g;
let str = "The cat scattered his food all over the catacomb.";
let result = str.match(reg)
console.log(result) // ['cat']

15、匹配开头:^

// 匹配当前内容是否以a开头
let reg = /^a/;
let str = '  aa'
let result = reg.test(str)
console.log(result) // false

16、匹配结尾:$

// 匹配当前内容是否以a结尾
let reg = /a$/;
let str = '  aa'
let result = reg.test(str)
console.log(result) // true

17、完全匹配:^ $

要求字符串和正则完全匹配

let reg = /^a$/;
let str = "a";
let result = reg.test(str)
console.log(result) // true

四、量词:设置一个内容出现的次数

量词只对它前边的一个内容起作用

1、出现m次:{m}

// 匹配是否有出现3次的a
let reg = /a{3}/;
let str = "aaa123";
let result = reg.test(str)
console.log(result) // true
// 匹配是否有只出现3次的a
let reg = /^a{3}$/;
let str = "aaaa";
let result = reg.test(str)
console.log(result) // false
// 匹配出现3次的字符,字符取值a到z
let reg = /[a-z]{3}/;
let str = "acd";
let result = reg.test(str)
console.log(result) // true
// 匹配出现3次的字符串ab
let reg = /(ab){3}/;
let str = "acd";
let result = reg.test(str)
console.log(result) // false

2、 出现m-n次:{m,n}

// 匹配出现1到3次的a
let reg = /a{1,3}/;
let str = "ahhh";
let result = reg.test(str)
console.log(result) // true

3、 出现m次以上:{m,}

// 匹配出现3次以上的a
let reg = /a{3,}/;
let str = "aa123";
let result = reg.test(str)
console.log(result) // false

4、 至少出现一次:

+

// 匹配至少出现1次的a
let reg = /a+/;
let str = "aaa123";
let result = reg.test(str)
console.log(result) // true

{1,}

// 匹配至少出现1次的a
let reg = /a{1,}/;
let str = "aaa123";
let result = reg.test(str)
console.log(result) // true

5、出现0次或者多次(任意次数):

*

// 匹配出现0次或者多次的a
let reg = /a*/;
let str = "123";
let result = reg.test(str)
console.log(result) // true

{0,}

// 匹配出现0次或者多次的a
let reg = /a{0,}/;
let str = "123";
let result = reg.test(str)
console.log(result) // true

6、出现0次或者1次:

?

// 匹配出现0次或者1次的a
let reg = /a?/;
let str = "b123";
let result = reg.test(str)
console.log(result) // false

{0,1}

// 匹配出现0次或者1次的a
let reg = /a{0,1}/;
let str = "b123";
let result = reg.test(str)
console.log(result) // false

五、正则表达式的方法:

1、 通过正则表达式检查一个字符串是否符合规则:

正则表达式.test(字符串):符合返回 true

// 判断当前字符串是否含有 a
let reg = new RegExp('a', 'i');
let str = 'abc';
let result = reg.test(str);
console.log(result) // true

2、将一个字符串拆分为一个数组:字符串.split(正则表达式)

全局匹配

// 根据任意字母拆分字符串
let reg = /[A-z]/;
let str = 'a1b2c3d4';
let result = str.split(reg)
console.log(result) // ['', '1', '2', '3', '4']

3、搜索字符串中是否含有指定内容:字符串.search(正则表达式)

如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到,则返回 -1
只会查找第一个,即使设置了全局匹配,也没有用

// 查找第一个a加b或或f加c组成的内容
let reg = /a[bef]c/;
let str = 'hello abc hello aec afc';
let result = str.search(reg)
console.log(result) // 6

4、将符合条件的内容提取出来:

字符串.match(正则表达式)

默认情况下,match只会找到第一个符合要求的内容,将匹配到的内容封装到一个数组中返回。
设置正则表达式的全局匹配模式,这样会匹配所有的内容

// 不区分大小写,全局匹配所有字母
let reg = /[A-z]/ig;
let str = 'a1b2c3d4ABCD';
let result = str.match(reg)
console.log(result) // ['a', 'b', 'c', 'd', 'A', 'B', 'C', 'D']

正则表达式.exec(字符串)

// 匹配axc格式的内容
let reg = /a[a-z]c/;
let str = "abcadcaecacc";
let result = reg.exec(str)
console.log(result) // ['abc', index: 0, input: 'abcadcaecacc', groups: undefined]

5、内容替换:字符串.replace(正则表达式, 新内容)

默认只会替换匹配到的第一个内容

// 将匹配到的第一个a替换为(●ˇ∀ˇ●)
let reg = /a/;
let str = 'a1b2a3d4ABaD';
let result = str.replace(reg,'(●ˇ∀ˇ●)')
console.log(result) // (●ˇ∀ˇ●)1b2a3d4ABaD

六、 常用的正则:

1、去除开头和结尾的空格:

var reg = /^\s+|\s+$/g
var str = "       hell    o       "
str.replace(reg,"")  // 结果:hell    o

2、输入框中只允许输入正数(包含小数):

onkeyup="value= (value.replace(/[^.0-9]/,'').replace(/.*?(\d+\.?\d*).*/g,'$1')).replace(/^0+/,'0')"

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

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

相关文章

将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(1)

问题 项目里使用了 AzureBlob 存储了用户上传的各种资源文件,近期 AzureBlob 的流量费用增长很快,想通过分析Blob的日志,获取一些可用的信息,所以有了这个需求:将存储账户的日志(读写,审计&…

X-12-ARIMA:季节性调整(Seasonal Adjustment)的强大工具,介绍数学原理

X-12-ARIMA:季节性调整的强大工具 在经济学、金融学以及各类统计数据分析中,季节性调整(Seasonal Adjustment)是一个至关重要的步骤。许多经济指标,如GDP、失业率和零售销售数据等,往往会受到季节性因素的…

.netframwork模拟启动webapi服务并编写对应api接口

在.NET Framework环境中模拟启动Web服务,可以使用几种不同的方法。一个常见的选择是利用HttpListener类来创建一个简单的HTTP服务器,或者使用Owin/Katana库来自托管ASP.NET Web API或MVC应用。下面简要介绍Owin/Katana示例代码。这种方法更加灵活&#x…

网络安全构成要素

一、防火墙 组织机构内部的网络与互联网相连时,为了避免域内受到非法访问的威胁,往往会设置防火墙。 使用NAT(NAPT)的情况下,由于限定了可以从外部访问的地址,因此也能起到防火墙的作用。 二、IDS入侵检…

免费送源码:Java+ssm+MySQL 基于PHP在线考试系统的设计与实现 计算机毕业设计原创定制

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对在线考试等问题,对如何通过计算…

html中鼠标位置信息

pageX:鼠标距离页面的最左边的距离,包括滚动条的长度。clientX:鼠标距离浏览器视口的左距离,不包括滚动条。offsetX:鼠标到事件源左边的距离。movementX:鼠标这次触发的事件的位置相对于上一次触发事件的位…

光谱相机的光谱分辨率可以达到多少?

多光谱相机 多光谱相机的光谱分辨率相对较低,波段数一般在 10 到 20 个左右,光谱分辨率通常在几十纳米到几百纳米之间,如常见的多光谱相机光谱分辨率为 100nm 左右。 高光谱相机 一般的高光谱相机光谱分辨率可达 2.5nm 到 10nm 左右&#x…

RAG 切块Chunk技术总结与自定义分块实现思路

TrustRAG项目地址🌟:https://github.com/gomate-community/TrustRAG 可配置的模块化RAG框架 切块简介 在RAG(Retrieval-Augmented Generation)任务中,Chunk切分是一个关键步骤,尤其是在处理结构复杂的PDF文…

Java基础——概念和常识(语言特点、JVM、JDK、JRE、AOT/JIT等介绍)

我是一个计算机专业研0的学生卡蒙Camel🐫🐫🐫(刚保研) 记录每天学习过程(主要学习Java、python、人工智能),总结知识点(内容来自:自我总结网上借鉴&#xff0…

Low-Level 大一统:如何使用Diffusion Models完成视频超分、去雨、去雾、降噪等所有Low-Level 任务?

Diffusion Models专栏文章汇总:入门与实战 前言:视频在传输过程中常常因为各种因素(如恶劣天气、噪声、压缩和传感器分辨率限制)而出现质量下降,这会严重影响计算机视觉任务(如目标检测和视频监控&#xff…

矩阵碰一碰发视频源码技术开发全解析,支持OEM

在当今数字化内容传播迅速发展的时代,矩阵碰一碰发视频功能以其便捷、高效的特点,为用户分享视频提供了全新的体验。本文将深入探讨矩阵碰一碰发视频源码的技术开发过程,从原理到实现,为开发者提供全面的技术指引。 一、技术原理 …

测试工程师的linux 命令学习(持续更新中)

1.ls """1.ls""" ls -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出 ls -l等同于 ll第一列共10位,第1位表示文档类型,d表示目录,-表示普通文件,l表示链接文件。…

HJ34 图片整理(Java版)

一、试题地址 图片整理_牛客题霸_牛客网 二、试题描述 描述 对于给定的由大小写字母和数字组成的字符串,请按照 ASCIIASCII 码值将其从小到大排序。 如果您需要了解更多关于 ASCIIASCII 码的知识,请参考下表。 输入描述: 在一行上输入一…

web开发工具之:三、JWT的理论知识,java的支持,封装的工具类可以直接使用

文章目录 前言一、JWT的理论知识1. 什么是 JWT(JSON Web Token)?2. **JWT 的组成**3. **JWT 的特点**4. **JWT 的使用场景**5. **JWT 的生命周期**6. **JWT 的优点**7. **JWT 的注意事项**5. **JWT 示例**总结 二、java的springboot支持1. po…

电路笔记(信号):Python 滤波器设计分析工具pyfda

目录 滤波器设置(3步实现滤波器设计)数据分析与使用pyfda功能界面数字滤波器数学表示线性相位线性相位的定义线性相位的特性 冲击响应quartus数据加载 CG 滤波器设置(3步实现滤波器设计) pip install pyfda #安装python依赖,详见https://pyfda.readthedocs.io/en/la…

【15】Word:互联网发展状况❗

目录 题目​ NO2 NO3 NO4 NO5 NO6 NO7.8.9 NO7 NO8 NO9 NO10 题目 NO2 布局→页面设置→纸张:A4→页边距:上下左右→版式:页眉/页脚页码范围:多页:对称页边距→内侧/外侧→装订线 NO3 首先为文档应用内置…

Web前端开发技术之HTMLCSS知识点总结

学习路线 一、新闻网界面1. 代码示例2. 效果展示3. 知识点总结3.1 HTML标签和字符实体3.2 超链接、颜色描述与标题元素3.3 关于图片和视频标签:3.4 CSS引入方式3.5 CSS选择器优先级 二、flex布局1. 代码示例2. 效果展示3. 知识点总结3.1 span标签和flex容器的区别3.…

BUUCTF Web

[极客大挑战 2019]LoveSQL union注入 是sql注入类型 输入1 发现不是数字型注入,那就是字符型注入。判断字段数,输入order by 4 #发现错误,就存在三个字段数 判断回显点:1 union select 1,2,3 # 判断回显点为2,3 判断数据库名 …

Kinova仿生机械臂Gen3搭载BOTA 力矩传感器SeneOne:彰显机器人触觉 AI 与六维力传感的融合力量

随着工业4.0时代的到来,自动化和智能化成为制造业的趋势。机器人作为实现这一趋势的重要工具,其性能和智能水平直接影响到生产效率和产品质量。然而,传统的机器人系统在应对复杂任务时往往缺乏足够的灵活性和适应性。为了解决这一问题&#x…

【数据库】MySQL数据库SQL语句汇总

目录 1.SQL 通用语法 2.SQL 分类 2.1.DDL 2.2.DML 2.3.DQL 2.4.DCL 3.DDL 3.1.数据库操作 3.1.1.查询 3.1.2.创建 3.1.3.删除 3.1.4.使用 3.2.表操作 3.2.1.查询 3.2.2.创建 3.2.3.数据类型 3.2.3.1.数值类型 3.2.3.2.字符串类型 3.2.3.3.日期时间类型 3.2…