正则表达式详细使用教程

正则是用于匹配字符串中字符组合的模式,在js中,正则也是对象。

定义正则的两种方式:

1.const 变量名=new RegExp(/表达式/)

<script>const req = new RegExp(/a/)console.log(req.test("asd"))//true</script>

2.const 变量名=/表达式/

  const req = /前端/console.log(req.test("学习前端"))//true

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

3.边界符^ $,前者代表开始,后者代表结束

<script>//^代表以a开头const req = /^a/console.log(req.test("a"));//trueconsole.log(req.test("abc"));//trueconsole.log(req.test("bac"));//false//$代表以a结尾const req1 = /a$/console.log(req1.test("a"));//trueconsole.log(req1.test("bca"));//trueconsole.log(req1.test("bac"));//false// 正则不需要加引号,无论数字或字符,^ $这样写代表精确匹配,必须是abc才符合规范,否则为falseconst req = /^abc$/console.log(req.test("abc"));//trueconsole.log(req.test("abcd"));//falseconsole.log(req.test("aabcd"));//false//单词边界,找出某句话的某个单词,例如:The cat scattered his food all over the room.想找到cat这个单词,但是如果只是使用/cat/这个正则,就会同时匹配到cat和scattered这两处文本,这时候就可以用到单词边界\b,他其实匹配的是能构成单词的字符(\w)和不能构成单词的字符(\W)中间的那个位置,也就是cat前后空隙.const req = /\bcat\b/gconst str = 'The cat scattered his food all over the room'console.log(str.replace(req, 'dog'));//The dog scattered his food all over the room</script>

4.i:匹配大小写

<script>// i:忽略大小写const req = /a/iconsole.log(req.test("a"));//trueconsole.log(req.test("abc"));//trueconsole.log(req.test("ABC"));//true</script>

5.g:全局匹配

<script>const req = /js/const str = '学js,找js工作,成js大神'console.log(str.replace(req, "前端"));//学前端,找js工作,成js大神const req1 = /js/gconst str1 = '学js,找js工作,成js大神'console.log(str1.replace(req1, "前端"));//学前端,找前端工作,成前端大神</script>

6.字符类[]

[]:表示有一系列字符可供选择,只要匹配其中一个就可以了

^:取反,注意要写到[]里

.:匹配的是除换行符之外的任意字符,''特殊也为false

<script>//1.只要匹配一个就符合规则const req = /[abc]/console.log(req.test("abcd"));//trueconsole.log(req.test("andy"));//true//2.三选一,不含其他元素const req1 = /^[abc]$/console.log(req1.test("abc"));//falseconsole.log(req1.test("andy"));//falseconsole.log(req1.test("a"));//true//[]的^表示全取反,就是取abc之外的const req = /[^abc]/console.log(req.test("a"));//falseconsole.log(req.test("d"));//true//.匹配的是除换行符之外的任意字符,''特殊也为falseconst req = /./console.log(req.test(''));//falseconsole.log(req.test("1"));//trueconsole.log(req.test("aaa"));//trueconsole.log(req.test("\n"));//falseconsole.log(req.test("\r"));//false</script>

7.量词符

<script>//*号使用const req = /^a*$/console.log(req.test(""));//trueconsole.log(req.test("a"));//trueconsole.log(req.test("aaaa"));//true//+号使用const req1 = /^a+$/console.log(req1.test(""));//falseconsole.log(req1.test("a"));//trueconsole.log(req1.test("aaaa"));//true//?号使用const req3 = /^a?$/console.log(req3.test(""));//trueconsole.log(req3.test("a"));//trueconsole.log(req3.test("aaaa"));//false//{n}使用const req4 = /^a{3}$/console.log(req4.test("aaa"));//trueconsole.log(req4.test("aaaa"));//false//{n,}使用const req5 = /^a{3,}$/console.log(req5.test("aaa"));//trueconsole.log(req5.test("aaaa"));//true//{n,m}使用const req6 = /^a{3,5}$/console.log(req6.test("aaa"));//trueconsole.log(req6.test("aaaa"));//trueconsole.log(req6.test("aaaaa"));//trueconsole.log(req6.test("aaaaaa"));//false
</script>

8.预定义类(简便写法,不做赘述)

9.分组及分组捕获、分支结构

   //分组let req = /(ab)+/  //匹配ab类型的console.log(req.test('ab'));//trueconsole.log(req.test('abab'));//true//分组捕获  例如将YYYY-MM-DD格式替换为MM/DD/YYYY,使用()将\d{4}等分组let req1 = /^(\d{4})-(\d{2})-(\d{2})$/let date = '2024-02-25'console.log(req1.test(date)); //true//如何获取分组对应内容,使用$,$1代表第一块内容YYYYconsole.log(date.replace(req1, '$2/$3/$1'));//02/25/2024//分支结构let str = '学前端内容'let str1 = '学后端知识'let str2 = '学正则方法'let req3 = /前端|正则/console.log(req3.test(str));//trueconsole.log(req3.test(str1));//falseconsole.log(req3.test(str2));//true

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

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

相关文章

(Linux学习一):Mac安装vmWare11.5,centOS 7安装步骤教程

一。下载vmware 官网地址&#xff1a;下载地址 由于我的电脑系统是Mac 10.15.6版本系统&#xff0c;我下载的是VMware Fusion 11.5版本&#xff0c;13是最新版本不支持安装需要系统在11以上。 百度网盘下载地址: VMware Fusion 11 VMware Fusion 12 VMware Fusion 13 下载需要…

正大国际:高频交易可以做吗?

第一种&#xff1a;抄单交易 这种做法也可以称之无脑型抄单&#xff0c;就是一旦进场之后&#xff0c;几秒钟内&#xff0c;不管是盈利还是亏损就要立即出来。交易时间一般是2-5秒&#xff0c;每天可能要做上几百次&#xff0c;或者上千次来回交易。这种做法对品种有要求&…

Nginx----高性能的WEB服务端(二)

一、高级配置 1、网页的状态页 基于nginx 模块 ngx_http_stub_status_module 实现&#xff0c;在编译安装nginx的时候需要添加编译参数 --with-http_stub_status_module&#xff0c;否则配置完成之后监测会是提示语法错误注意: 状态页显示的是整个服务器的状态,而非虚拟主机的…

一阶函数与高阶函数

一阶函数 ● JavaScript将函数视为一等公民&#xff1b; ● 这意味着函数只是简单的值&#xff1b; ● 函数只是另一种对象的“类型” 将函数存储在变量或属性中 const add (a,b) > a b; const counter {value: 23,inc: function() {this.value; } } 将函数作为参数传…

关系型数据库事务的四性ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)

关系型数据库事务的四性ACID:原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isolation&#xff09;和持久性&#xff08;Durability&#xff09; 事务的四性通常指的是数据库事务的ACID属性&#xff0c;包括原子性&…

Netty权威指南——基础篇1(同步阻塞IO-BIO)

1 Linux网络I/O模型简介 1.1 简述 Linux的内核将所有外部设备都看做一个文件来操作&#xff0c;对一个文件的读写操作会调用内核提供的命令&#xff0c;返回一个file descriptor(fd&#xff0c;文件描述符)。而对一个socket的读写也会有相应的描述符&#xff0c;称为socketfd(…

IT廉连看——C语言——概述

IT廉连看——C语言概述 一、什么是c语言 C语言是一门通用计算机编程语言&#xff0c;广泛应用于底层开发。C语言的设计目标是提供一种能以简易 的方式编译、处理低级存储器、产 生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。 尽管C语言提供了许多低级处理的功…

【C语言】linux内核__netdev_start_xmit函数

一、中文注释 // 这是一个内联函数&#xff0c;用于启动网络设备的数据包发送流程。 // 它通过网络设备操作集&#xff08;net_device_ops&#xff09;指定的特定函数 // 来启动给定数据包的发送。// ops: 指向包含网络设备操作函数的结构体的指针 // skb: 指向要发送的套接字…

Matlab自学笔记二十七:详解格式化文本sprintf各参数设置方法

1.一个程序引例 上篇文章已经介绍了格式化文本的初步应用&#xff0c;程序示例如下&#xff1a; sprintf(|%f\n|%.2f\n|%8.2f,pi*ones(1,3)) 2.格式化操作符各字段的含义解析 格式化操作符可以有六个字段&#xff0c;只有主字符%和转换格式是必需的&#xff0c;其他都是可选…

跨境支付介绍

1、跨境电商定义和分类&#xff1b; 2、国际贸易清结算&#xff1b; 3、跨境支付&#xff1b; 1、跨境电商定义和分类 跨境电商业务简单说就是指不同国家地域的主体通过电子商务进行交易的一种业务模式。同传统的电商不同&#xff0c;交易双方属于不同的国家。因此&#xff0…

【漏洞复现】若依系统默认弱口令漏洞

Nx01 产品简介 若依系统&#xff08;RuoYi&#xff09;是一套基于SpringBoot的权限管理系统&#xff0c;核心技术采用Spring、MyBatis、Shiro&#xff0c;众多政府、企业采用它作为某些系统的权限管理后台&#xff0c;使用率较高。 Nx02 漏洞描述 若依系统存在默认弱口令漏洞&…

Hikvision SPON IP网络对讲广播系统命令执行漏洞

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 1.漏洞描述 Hikvision Intercom Broadcasting System是中国海康威视&a…

分布式架构(分布式ID+分布式事务)

分布式架构 分布式事务产生的场景&#xff1a; 跨JVM进程产生的分布式事务 单体系统访问多个数据库实例 多服务访问同一个数据库实例 CAP理论 C&#xff1a;一致性&#xff0c;指写操作后的读操作可以读取到最新的数据状态&#xff0c;当数据分布在多个节点上&#xff0…

【力扣白嫖日记】178.分数排名

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 178.分数排名 表&#xff1a;Scores 列名类型idintscoredecimal 在 SQL 中&#xff0c;id 是该表的主键。 …

普中51单片机学习(8*8LED点阵)

8*8LED点阵 实验代码 #include "reg52.h" #include "intrins.h"typedef unsigned int u16; typedef unsigned char u8; u8 lednum0x80;sbit SHCPP3^6; sbit SERP3^4; sbit STCPP3^5;void HC595SENDBYTE(u8 dat) {u8 a;SHCP1;STCP1;for(a0;a<8;a){SERd…

stable-diffusion-webui+sadTalker开启GFPGAN as Face enhancer

接上一篇&#xff1a;在autodl搭建stable-diffusion-webuisadTalker-CSDN博客 要开启sadTalker gfpgan as face enhancer&#xff0c; 需要将 1. stable-diffusion-webui/extensions/SadTalker/gfpgan/weights 目录下的文件拷贝到 :~/autodl-tmp/models/GFPGAN/目录下 2.将G…

有趣的CSS - 弹跳的圆

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是用css写一个好玩的不停弹跳变形的圆。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样式页…

C++ 学习(1)---- 左值 右值和右值引用

这里写目录标题 左值右值左值引用和右值引用右值引用和移动构造函数std::move 移动语义返回值优化移动操作要保证安全 万能引用std::forward 完美转发传入左值传入右值 左值 左值是指可以使用 & 符号获取到内存地址的表达式&#xff0c;一般出现在赋值语句的左边&#xff…

我的NPI项目之Android 安全系列 -- Android Strongbox 使能(一)

这里借用Android14高通相关的技术文档作为基础文档&#xff0c;该文档描述的是基于NFC的secure element. NFC型号为SN220. 有些概念的说明&#xff1a; 1. RoT 在我们目前的这个上下文中&#xff0c;首先RoT下几个内容&#xff0c;Bootinfo/ Additonal params(images hash) /…

洛谷C++简单题小练习day21—梦境数数小程序

day21--梦境数数--2.25 习题概述 题目背景 Bessie 处于半梦半醒的状态。过了一会儿&#xff0c;她意识到她在数数&#xff0c;不能入睡。 题目描述 Bessie 的大脑反应灵敏&#xff0c;仿佛真实地看到了她数过的一个又一个数。她开始注意每一个数码&#xff08;0…9&#x…