Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >js正则表达式基础知识

js正则表达式基础知识

作者头像
用户6379025
发布于 2022-12-26 07:57:54
发布于 2022-12-26 07:57:54
27300
代码可运行
举报
文章被收录于专栏:莫凡莫凡
运行总次数:0
代码可运行
什么是正则

1.正则只能用来处理字符串 2.处理一般包含两方面: A:验证当前字符串是否符合某个规则 “正则匹配” B:把一个字符串中符合规则的字符获取到 “正则捕获” C:学习正则其实就是在学习如何编写规则,每一个正则都是由修饰符,“元字符””两部分组成

创建正则

.正则两个斜杠之间包起来的都是“元字符”,斜杠后面出现的都是“修饰符

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 let reg=/[a-z]/igm  //=>字面量方式创建           
 let reg=new RegExp("[a-z]","igm")  //构造函方式创建
常用的元字符和修饰符

常用的修饰符

i:ignoreCase 忽略大写小匹配

m:multiline 多行匹配

g:global 全局匹配

常用的元字符

[特殊元字符]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\d  0~9之间的一个数字
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\D0~9之间的任意字符
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\w  “数字、字母、下划线”中的任意一个 =>/[0-9a-zA-Z_]/等价于\w
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\s  匹配任意一个空白字符(包括\t制表符[TAB键四个空格]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\b  匹配边界符  'zhu'(z左边和u右边就是边界)  'zhu-feng'(z左边、u右边、f左边、g右边是边界)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\n  匹配一个换行符
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\  转义字符(把一个普通字符转义为特殊的字符,例如:\d,把有特殊含义的转换为普通意思,例如:\. 此处的点就不是任意字符,而是一个小数点)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
. 不仅仅是小数点,代表除了\n以外的任意字符
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
^  以某个元字符开头
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$  以某个元字符结尾
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x|y  x或者y中的任意一个(a|z...)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[xyz] x或者y或者z中的任意一个
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[^xyz] 除了x\y\z以外的任意字符
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[a-z] 获取a-z中的任意一个字符([0-9] 等价于\d ...)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[^a-z] 除了a-z的任意字符
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
()  正则分组
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(?:) 当前分组只匹配不捕获
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(?=) 正向预查
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(?!) 负向预查
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...

[量词元字符:让其左边的元字符出现多少次]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
* 出现零到多次
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
? 出现零到一次
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+ 出现一到多次
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{n} 出现N
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{n,} 出现N到多次
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{n,m} 出现NM

[普通元字符]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
只要在正则中出现的元字符(在基于字面方式创建),除了特殊和有量词意义的以外,其余的都是普通元字符
正则中括号[] 的细节
  • 1.中括号中出现的元字符一般都是代表本身含义的
  • 2.中括号中出现的两位数,不是两位数,而是两个数字中的任意一个
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let reg = /^.+$/;//=>一个正则设置了^和$,那么代表的含义其实就是只能是xxx
console.log(reg.test('n'));//=>true
console.log(reg.test('1'));//=>true
console.log(reg.test('nn'));//=>true
console.log(reg.test('\n'));//=>false

let reg = /^[.]+$/;   //代表本身含义的  .
console.log(reg.test('n'));//=>false
console.log(reg.test('1'));//=>false
console.log(reg.test('nn'));//=>false
console.log(reg.test('\n'));//=>false
console.log(reg.test('...'));//=>true

let reg = /^[\d]+$/; //=>\d在这里依然是0~9中的一个数字
console.log(reg.test('0'));//=>true
console.log(reg.test('d'));//=>false

let reg = /^[18]$/;//=>不加^和$代表字符串中只要包含xxx即可
console.log(reg.test('18'));//=>false
console.log(reg.test('1'));//=>true
console.log(reg.test('8'));//=>true

let reg = /^[12-65]$/;
console.log(reg.test('13'));//=>false 不是12~65
console.log(reg.test('7'));//=>false  这个正则的意思是 1或者2~6或者5
console.log(reg.test('3.5'));//=>false
正则小括号的特殊作用 ()
  • 1.改变的默认的优先级
  • 2.分组捕获
  • 3.分组引用
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let reg = /^18|19$/;
console.log(reg.test('18'));//=>true
console.log(reg.test('19'));//=>true
console.log(reg.test('1819'));//=>true
console.log(reg.test('189'));//=>true
console.log(reg.test('181'));//=>true
console.log(reg.test('819'));//=>true
console.log(reg.test('119'));//=>true

reg = /^(18|19)$/;
console.log(reg.test('18'));//=>true
console.log(reg.test('19'));//=>true
console.log(reg.test('1819'));//=>false
console.log(reg.test('189'));//=>false
console.log(reg.test('181'));//=>false
console.log(reg.test('819'));//=>false
console.log(reg.test('119'));//=>false

let reg = /^([a-z])([a-z])\2\1$/;//=>正则中出现的\1代表和第一个分组出现一模一样的内容...
console.log(reg.test('oppo'));
console.log(reg.test('poop'));

=>编写一个正则匹配身份证号码
let reg = /^\d{17}(\d|X)$/;//=>简单:只能匹配是否符合格式,不能提取出身份证中的一些信息
'130828199012040617'
=>130828 地域
=>19901204 出生年月
=>0617 倒数第二位:奇数=男  偶数=
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SQL SERVER 如何实现UNDO REDO 和PostgreSQL 有近亲关系吗
SQL SERVER 好久没有写了,偶然有人问SQL SERVER 的UNDO REDO 怎么实现的,因为这些人不曾听说SQL SERVER 有 autovacuum ,vacuum ,也不曾听说 SQL SERVER 有UNDO 表空间,REDO 日志,到底SQL Server是怎么实现,传统数据库中需要的,前滚翻和后滚翻,我们今天看看,到底SQL SERVER 和那个数据库有近亲关系。
AustinDatabases
2023/09/06
3070
SQL SERVER 如何实现UNDO REDO  和PostgreSQL 有近亲关系吗
SQL Server 数据库清除日志的方法
SQLSERVER的数据库日志占用很大的空间,下面提供三种方法用于清除无用的数据库日志文件 方法一: 1、打开查询分析器,输入命令 BACKUP LOG database_name WITH NO_LOG 2、再打开企业管理器--右键要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至xxm,这里会给出一个允许收缩到的最小m数,直接输入这个数,确定就可以了。 方法二: 设置检查点,自动截断日志   一般情况下,SQL数据库的收缩并不能很大程度上减小数
逸鹏
2018/04/11
4.9K0
sql2005数据库置疑的解决方法_sql数据库置疑修复工具
A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager 里面建立。 B.停掉数据库服务器。 C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据 库数据文件test_data.mdf。 D.启动数据库服务器。此时会看到数据库test的状态为”置疑”。这时候不能对此数据库进行任何*作。 E.设置数据库允许直接*作系统表。此*作可以在SQL Server Enterprise Manager里面选择数据库服 务器,按右键,选择”属性”,在”服务器设置”页面中将”允许对系统目录直接修改”一项选中。也可以 使用如下语句来实现。 use master go sp_configure ‘allow updates’,1 go reconfigure with override go F.设置test为紧急修复模式 update sysdatabases set status=-32768 where dbid=DB_ID(‘test’) 此时可以在SQL Server Enterprise Manager里面看到该数据库处于”只读\置疑\脱机\紧急模式”可以 看到数据库里面的表,但是仅仅有系统表 G.下面执行真正的恢复*作,重建数据库日志文件 dbcc rebuild_log(‘test’,’C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf’) 执行过程中,如果遇到下列提示信息:
全栈程序员站长
2022/09/23
1.5K0
事务日志初探(二)---简单恢复模式
简述     在简单恢复模式下,日志文件的作用仅仅是保证了SQL Server事务的ACID属性。并不承担具体的恢复数据的角色。正如”简单”这个词的字面意思一样,数据的备份和恢复仅仅是依赖于手动备份和恢复.我们简单介绍下三种恢复模式。 1.完整恢复模式    这种模式会为所有操作都记录日志,当数据文件被破坏时,可以备份尾部事务日志,并用于将数据库还原到给定的时间点。因此OLTP生产系统通常会使用完整的恢复模式。 2.大容量日志恢复模式    这种模式把日志记录量最小化,只为大容量操作记录日志。 3.简单恢复
用户1217611
2018/01/30
8780
事务日志初探(二)---简单恢复模式
SQL Server事务日志的初学者指南
什么是事务日志? 事务日志是每个SQL Server数据库的文件组成部分。它包含在SQL Server数据库中日志记录过程中生成的日志记录。当涉及到灾难恢复时,事务日志是SQL服务器数据库中最重要的组
程序你好
2018/07/20
1.5K0
实验一:SQL server 2005高可用性之----日志传送
如转载,请注明出处:http://blog.csdn.net/robinson_0612/archive/2009/10/31/4751070.aspx
Leshami
2018/08/07
9600
实验一:SQL server 2005高可用性之----日志传送
SQL Server 使用 SQL 语句还原备份
在 SQL Server 中,可以通过 SQL Server Management Studio (SSMS) 工具或 T-SQL 语句进行数据库还原。每种方法都有其优势和不足,下面是两者的比较:
晓松
2024/12/25
3140
SQL Server 使用 SQL 语句还原备份
Sqlserver2005日志文件太大,使其减小的方法
backup log dbNamewith NO_LOG backup log dbNamewith TRUNCATE_ONLY DBCC SHRINKDATABASE(dbName)
全栈程序员站长
2022/07/17
1.2K0
SQL Server 的备份机制及其恢复实现
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。
喵手
2025/01/07
1920
SQL Server 的备份机制及其恢复实现
SQL Server 数据库设计
SQL Server 系统数据库在安装软件时自动创建,用于协助系统共同完成对数据库的操作;也是数据库运行的基础;
剑指工控
2021/11/09
2.6K0
SQL Server 数据库设计
SQL Server 常用近百条SQL语句(收藏版)
sp_configure显示或更改当前服务器的全局配置设置。 RECONFIGURE表示SQL Server不用重新启动就立即生效 。
数据和云
2020/04/02
2.7K0
SQL Server数据库的单表数据恢复
update 对应的是LOP_MODIFY_ROW, delete对应的是LOP_DELETE_ROWS, insert对应的是LOP_INSERT_ROWS
保持热爱奔赴山海
2024/01/17
6240
MySQL OCP试题解析(7)
错误。--only-known-file-types 不限制表空间的存储方式,而是限制文件类型。
俊才
2025/05/21
900
MySQL OCP试题解析(7)
SQL Server 2012事务日志截断、回绕与收缩
每个 SQL Server 数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做的修改。 必须定期截断事务日志以避免它被填满。 但是,一些因素可能延迟日志截断,因此监视日志大小很重要。 某些
逸鹏
2018/04/11
4.6K0
SQL Server 2012事务日志截断、回绕与收缩
【转】SQL Server 备份你真的了解吗?
如下,当我们对数据库进行以下备份计划(数据库必须进行首次非COPY_ONLY的完整备份,才能进行差异或日志备份)
保持热爱奔赴山海
2024/01/16
5290
使用T-SQL配置日志传送
日志传送(log shipping)主要基于SQL Server代理,使用定时作业来完成,另外在配置日志传送之前必须要创建共享文件夹,用于辅助服务器访问。这里我们假设有数据库logTrans1需要进行日志传送,共享文件夹为“C:\data”,在T-SQL中配置日志传送主要有以下几步操作:
深蓝studyzy
2022/06/16
3580
SQL Server AlwaysOn Availability Group On Linux
在 Linux 上,往集群管理器中添加集群资源时,一定是先建立集群资源,接着将新建的资源加入到集群中去。
Lenis
2019/12/25
2.1K0
SQL Server——数据库创建及修改[通俗易懂]
从用户的角度看,组成数据库的逻辑成分称为数据库对象,SQL Server数据库由存放数 据的表以及支持这些数据的存储、检索、安全性和完整性的对象所组成。
全栈程序员站长
2022/09/23
1.1K0
SQL Server——数据库创建及修改[通俗易懂]
MySQL OCP试题解析(8)
错误。冷备份需要数据库完全停止服务,而此命令使用了 --single-transaction,通过事务快照实现热备份(Hot Backup),允许数据库在备份过程中继续处理读写操作。
俊才
2025/05/23
830
MySQL OCP试题解析(8)
数据库置疑什么原因_sql2008数据库置疑
在MS SQLSERVER中一直有这样的问题,SQLSERVER的状态”置疑”,我们先来分析一下SQLSERVER数据库”置疑”的原因:
全栈程序员站长
2022/09/24
6820
相关推荐
SQL SERVER 如何实现UNDO REDO 和PostgreSQL 有近亲关系吗
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验