js基础正则表达式细解

2024-01-13 14:38

本文主要是介绍js基础正则表达式细解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目标:
1,正则语法。
2,在IDE中使用正则处理规则复杂的字符串查找 ,替换需求
3,在js程序设计中使用正则表达式处理字符串。
一,正则表达式在文本文档中的简单操作:
Regular Expression使用单个字符串来描述,匹配一系列符合某个句法规则的字符串。(就是按照某种规则去匹配符合条件的字符串)
1,通配符
find./-name*.txt在当前目录下查找txt文件。
2,正则表达式图形工具:http://regexper.com,
访问不了的情况可以在GitHub上下载到本地用。(1下载代码到本地2需要有node环境,进入目录install安装。)

3,去掉http协议的jpg文件的协议头。
例如:http:\/\/.+.jpg 表示找到文件中的http协议头中的jpg文件。
.点表示任意字符,*星表示任意个数,\反斜杠是转义字符(符号冲突时需要用到反斜杠转义符)
分组替换:http:(\/\/.+.jpg),→$1或者\$1转义替换 →结果就是替掉了http。

4,日期替换
2006/02/03
test/07/sd
2016/05/06
1998-03-07
12345/23/45678
1234/23/45678
12345/23/45

正在写法:^\d{4}[/-]\d{2}[/-]\d{2} + 表示结尾,\d表示数字,{数字}表示量词,[]中括号内表示或者(中括号内的其中一个)。

正则括号提取: ^(\d{4})/-/- 2- 3 1(表示第二组-第三组-第一组)。


二,正则在js对象中的操作:
js通过内置对象RegExp支持正则表达式:
有两种方法实例化RegExp对象
1,字面量
var reg=/\bis\b/g;(正则文本写在反斜杠之间,\b表示单词边界,边界内写内容,g代表global,匹配全文的意思)
定义正则表达式:
js中字符串的replace方法,可以查找替换,
2,构造函数方式
var reg=new RegExp(’\bis\b’,’g’)
(js中反斜杠本身就是特殊字符,所以需要用反斜杠进行转义,)
3,修饰符
g:global全文搜索,不添加g,搜索到第一个匹配停止。
i:ignore case忽略大小写,默认大小写敏感。
m:multiple lines表示多行搜索。
4,元字符
正则表达式由两种基本字符类型组成,
1,愿义文本字符,2,元字符
元字符是正则中有特殊含义的非字母字符 。
*+?¥^.|(){}[]
这里写图片描述

5,字符类:
①ab\t含义;字母ab和水平制表符对应
②需要匹配一系列特征的字符时,可以使用元字符[]中括号来构建一个简单的类。([abc]把字符a或b或c自定义归为一类,表达式可以匹配这类的字符)
字符类取反[^abc]
6,范围类:
[a-z]闭区间,
7,预定义类:
这里写图片描述

匹配一个ab+数字+任意字符 的字符串
ab\d.
8,边界匹配
\d就是单词边界
这里写图片描述
m表示多行匹配。
9,量词
这里写图片描述
10,贪婪模式和非贪婪模式
量词后边加?号即为非贪婪模式,尽可能少的匹配。
11,括号分组:
匹配字符串Byron连续出现3次的场景。
Byron{3}
12,反向引用:
1 n 表示捕获分组,
13,忽略分组
需要在分组内加上?:
(?:Byron).(ok)
14,前瞻
正则从文本头部向尾部开始解析,文本尾部方向,成为“前”。
前瞻就是正则表达式匹配到规则的时候,向前检查是否符合断言。
js不支持后顾/后瞻
符合和不符合特定断言成为 肯定/正向 匹配和 否定/负向 匹配。
写法:
正向前瞻:exp(?=assert)例如/\w(?=\d)/g,’x’/
负向前瞻:exp(?!assert)

三。js对象属性:
global全文搜索,默认值false。
ignore case是否大小写敏感,默认值false。
multiple lines多行搜索,默认值false。
lastIndex:是当前表达式匹配内容的最后一个字符的下一个位置。
source:正则表达式的文本字符串。
js中正则表达式的两种方法(test和exec方法。):
1,test方法:
RegExp.prototype.test(str);
作用:用来测试字符串参数中是否存在匹配正则表达式模式的字符串。
返回值:true或flase。
由于lastIndex的原因,
2,exec方法

RegExp.prototype.exec(str);
作用:使用正则表达式模式对字符串执行搜索,并将更新全局RegExp对象的属性以反映匹配结果。
返回值:null或者数组。
数组中有两个额外属性:
Index声明匹配文字的第一个字符的位置
input存放被检索的字符串string。

3,非全局调用:
调用非全局的RegExp对象的exec()时,返回数组。
第一个元素是与正则表达式想匹配的文本,
第二个元素是与RegExpObject的第一个子表达式相匹配的文本(如果有的话)
第三个元素是与RegExp对象的第二个子表达式相匹配的文本(如果有的话),以此类推。
这里写图片描述
,可以用while循环来检测字符串,把每次的结果是从谁开始匹配的,匹配的位置,匹配的结果,里边的分组。常用。

var reg3=/\d(\w)(\w)\d/;
var reg4=/\d(\w)(\w)\d/g;var ret=reg.exec(ts);console.log(reg3.lastIndex+'\t'+ret.index+'\t'+ret.toString());while(ret=reg4.exec(ts)){console.log(reg4.lastIndex+'\t'+ret.index+'\t'+ret.toString());
}

四,字符串对象:
stringl.protatype.search(reg)

这篇关于js基础正则表达式细解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/601802

相关文章

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(