RegExp正则表达式-基本语法

2023-11-17

RegExp

百度云资料
密码:

 f89c

里面有详细的语法跟例子,希望对大家有帮助.

课前补充

  1. 转义字符 “\”
  2. 多行字符串
  3. 字符串换行符\n

RegExp作用

  1. 匹配特殊字符或有特殊搭配原则的字符的最佳选择。

创建方式

  1. 直接量(推荐)
  2. new RegExp();
var str = "abc\\def";
        // 直接量
        var reg = /abc/i;
        // i 是忽略大小写
        var Str = "ABCDe";

        // 创建的第二种方式
        var regg = new RegExp("abc","igm");

        // RegExp() 要是这个参数放进去的本身是正则表达式,
        // 那么它是相同的规则,但是不是同一个引用
        var reg1 = RegExp(reg);
        var reg2 = new RegExp(reg);
        // reg1 跟 reg 是同一个,他们指向同一个地址
        // reg2 内容跟这个 reg是一样的, 但是他们不是指向同一个地址

i g m 修饰符

1. i 执行对大小写不敏感的匹配。
2. g 执行全局匹配查找所有匹配而非在找到第一个匹配后停止
3. 执行多行匹配

方法

1. reg.test(str);
判断str字符串是不是包含这个reg片段
2. str.match(reg)
把匹配的reg串给返回

方括号(表达式)

1. [abc] 查找方括号之间的任何字符
2. [^abc]  查找任何不在方括号之间的字符
3. [0-9] 0到9数字
4. [a-z] 查找任何从小写 a 到小写 z 的字符
5. (red|blue|green) 查找任何指定的选项
也就是不是当个字符,可能是个字符串

元字符(具有特殊意义的字符)

1. \w等于[0-9A-z_]也是代表一位(world)
2. \W等于[^\w] 表示的\w的非
3. \d等于[0-9]  \D等于[^\d]
4. \s元字符用于查找空白符(空格符  制表符 回车符 换行符 垂直换行符 换页符) \S 查找非空白字符 \s === [\t\n\r\v\f ]
5. \b 匹配单词边界 \B 匹配非单词边界
6. . === [^\r\n]

量词

1. n+ 匹配任何包含至少一个 n 的字符串 {1,}
2. n* 匹配任何包含零个或多个 n 的字符串 {0,}
3. n? {0,1}
4. n{x} 表示的就是三个
5. n{x,y}  表示的是x到y个
6. n{x,}   表示就是x到无限个
7. n&  匹配任何结尾为 n 的字符串
8. ^n  匹配任何开头为 n 的字符串
9. ?=n 匹配任何其后紧接指定字符串 n 的字符串
10. ?!=n  匹配任何其后没有紧接指定字符串 n 的字符串

RegExp对象上面的属性

1. global global 属性来检测正则表达式是否具有标志 g
2. ignoreCase  RegExp 对象是否具有标志 i
3. lastIndex   一个整数,标示开始下一次匹配的字符位置
4. multiline  属性用于返回正则表达式是否具有标志 m
5. source  正则表达式的源文本

RegExp 方法

1. exec  检索字符串中指定的值 返回找到的值 并确定其位置
2. compile  编译正则表达式
3. test 检索字符串中指定的值。返回 true 或 false

支持正则表达式的 String 对象的方法

1. search 检索与正则表达式相匹配的值
2. match 找到一个或多个正则表达式的匹配
3. replace 替换与正则表达式匹配的子串
4. split 把字符串分割为字符串数组

拓展() 子表达式

var reg4 = /(\w)\1(\w)\2/g;
    // () 这个整体叫做是子表达式
    // 上面自然而言就是有两个子表达式
    //
    // \数字表示的意思就是copy一份前面的值
    var str4 = "aabb";
    console.log(str4.match(reg4));
    console.log(reg4.exec(str4));

非贪婪匹配

  1. 再量词后面加个问号
var str = "aaaaaa";
var reg = /a{1,3}?/g;
var ans = str.match(reg);

replace

// 匹配xxyy形式,然后换成yyxx
        var reg3 = /(\w)\1(\w)\2/g;
        var str3 = "aabbccdd";
        // var tmp = str3.match(reg3);
        var ans = str3.replace(reg3,"$2$2$1$1"); //bbaa
        
        // var anss = str3.replace(reg3,function(arr,$1,$2){
        //     // console.log("arr内容:"+arr);
        //     console.log($2);
        //     return $2 + $2 + $1 + $1;
        // });
		// the-first-name
        // theFirstName
        var reg5 = /-(\w)/g;
        var str = "the-first-name";
        var ans1 = str.replace(reg5,function ($,$1){
            // 这个方法调用的次数取决于匹配了多少次就调用多少次
            // $1 表示的就是第一个子表达式的内容
            return $1.toUpperCase();
        });

实现千位分隔符

 		var str = '1234567890';
        var f = str.replace(/\d{1,3}(?=(\d{3})+$)/g, '$&,');
		console.log(f);

解释:

正则表达式 \d{1,3}(?=(\d{3})+$)  表示前面有1~3个数字,后面的至少由一组3个数字结尾。

?=表示正向引用,可以作为匹配的条件,但匹配到的内容不获取,并且作为下一次查询的开始。

 $& 表示与正则表达式相匹配的内容,具体的使用可以查看字符串replace()方法的
		// 正向预查 正向断言
        var str4 = "aba!aa";
        var reg44 = /a(?=b)/g;
        //表示的是a后面要是b,但是这个b不参加最后结果
        console.log(str4.match(reg44));
        var f = '1234567890'.replace(/\d{1,3}(?=(\d{3})+$)/g, '$&,');
console.log(f);
		// 结果:1,234,567,890
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RegExp正则表达式-基本语法 的相关文章

  • Android——单选多选按钮的使用详解

    button1 Button findViewById R id button1 button2 Button findViewById R id button2 button1 setOnClickListener this button
  • java学习总结——protobuf3的语法

    本文主要讨论protobuf3在编写proto接口描述文件时的语法 下面是一个proto文件的实例 syntax proto3 import address proto package com study blog protobuf opt
  • [激光原理与应用-40]:《光电检测技术-7》- 常见光干涉仪及其应用

    目录 第1章 干涉仪概述 1 1 什么是干涉仪 1 2 基本原理 1 3 分类 1 4 应用 1 5 干涉仪的类型 第2章 常见光干涉仪 2 1 迈克尔逊干涉仪 2 2 泰曼 格林干涉仪 2 3 移相干涉测量仪 2 4 菲索共路干涉仪 第1
  • vue+webpack5:If you want to include a polyfill, you need to

    升级 vue cli 5 0 1 发现 const path require path 异常 发现默认webpack 是 提示v5区别于v4不再自动引入Polyfills 需要手动添加 按照控制台提示 1 安装path browserify
  • mysql不包含模糊查询

    包含like 不包含not like select from 数据库表 where HouseName like 江门奥园项目 and HouseName like 幢 and HouseName not like 商 不包含not in
  • jupyter修改文件目录和虚拟环境

    在我们安装完jupyter的时候 他是默认为根目录的 我们想切换到我们自己创建的文件目录中该怎么做呢 请看下面步骤 一 切换文件目录 首先 先在我们要放的目录下创建一个文件夹 如 我的为 F Jupyter 在命令行窗口中输入 jupyte
  • cocos2dx 常见的49中动作详解

    bool HelloWorld init 1 super init first if CCLayer init return false CCSprite sp CCSprite create Icon png sp gt setPosit
  • java中的类型赋值常见错误

    Java中float double long类型变量赋值添加f d L尾缀问题 添加尾缀说明 我们知道Java在变量赋值的时候 其中float double long数据类型变量 需要在赋值直接量后面分别添加f或F d或D l或L尾缀来说明
  • JAVA的可变类与不可变类

    可变类和不可变类 Mutable and Immutable Objects 的初步定义 可变类 当你获得这个类的一个实例引用时 你可以改变这个实例的内容 不可变类 当你获得这个类的一个实例引用时 你不可以改变这个实例的内容 不可变类的实例
  • Mybatis批量插入数据的三种方式分享

    转自 Mybatis批量插入数据的三种方式分享 下文笔者讲述Mybatis插入数据的方法分享 如下所示 for循环insert long start System currentTimeMillis for int i 0 i lt 100
  • 结构化思维

    我们在求职时 经常能看到岗位要求上写着 逻辑思维 系统 结构化思维 身为一个直觉的打工仔 面对未来Boss耳提面命的 能力标签 我们怎能视若无睹 逻辑思维 好理解 不就 判断 推理 嘛 可这 结构化思维 是啥 很多人就答不上来了 在理解概念
  • electron ajax路径,electron 文件及文件夹上传的问题探索

    不晓得如今electron最新版的dialog解决了这个问题没有 选择文件夹的时候没有返回文件夹里面全部的文件 而是返回了文件夹的路径 一样的在网页端是能够经过webkitDirectory获取到文件夹下面全部的文件node 我试了不少的方
  • https开头的网址是什么意思_网址是什么意思?基础知识普及

    通俗的理解网址就是常说的URL 是很多个它一起组成了数量庞大形形色色的网站 网址 Uniform Resource Locator 统一资源定位器 是计算机Web网络相关的术语 就是网页地址的意思 我们的互联网世界就是由很多的网址组成 也可
  • 2021-04-06

    开源 开源的概念 开源 一词对应英文 Open Source 最初起源于软件开发领域 因此也称为 开放源代码 对应的软件则称为开源软件 Open Source Software 除了我们熟知的开源软件以外 开源的表现形式还有开源硬件 Ope
  • C++编译器为类自动生成拷贝构造函数的情况

    在一下情况中C 会为类自动生成拷贝构造函数 1 类中有虚函数 这种情况即意味着类的对象中有指向虚函数表的指针 考虑下面的情况 class A private int m a public virtual void ShowVal void
  • echarts实现气泡图(气泡之间不叠加)

    前言 echarts本身是有气泡图的 官方气泡图的特点是每个气泡的位置是基于坐标轴进行定位 如图1和2所示 但是本文所介绍的气泡图并不是官方所介绍的气泡图 而是一类区别于官方的图表类型 这种图表类型通常采用d3 js插件实现 如图3所示 从
  • MPC8314 (e300核) uboot 调试

    历经2个多月 完成了MPC8314最小系统 uboot 及Linux内核和根文件系统的调试 这是我第一次从头开始做小系统和内核的移植工作 虽然调试的比较辛苦 但是收获还是很多的 下面就介绍一下调试的过程和一些原理性的东西 1 MPC8314
  • Java基础面试题(三) (2020持续更新)

    前言 全套面试题请直接转到文章末尾 1 Java 中能创建 volatile 数组吗 能 Java 中可以创建 volatile 类型数组 不过只是一个指向数组的引用 而不 是整个数组 我的意思是 如果改变引用指向的数组 将会受到 vola
  • 馆员工作站的产品功能以及特点介绍

    馆员工作站通过跟电脑相互连接使用 工作人员对图书进行标签加工时 可使用设备对粘贴在图书上的RFID电子标签进行加工 通过条形码扫描器扫描图书上的条形码 同时识别图书上的电子标签 对电子标签和图书条码进行标签初始化操作 除此之外 还可以进行图

随机推荐

  • 6个常用的Python编程开发工具

    随着互联网的迅速发展 新技术不断创新 万物互联的时代 企业对IT人员的需求不断增加 很多想要进入IT行业的小伙伴经常会抱怨 想入门 却不知道从哪下手 最近就有不少小伙伴和小编抱怨 我想学Python 但是都不知道该使用哪些工具 别着急 学习
  • ES6入门

    一 let和const命令 1 let命令 类似于var 但是只在let所在的代码块有效 不存在变量提升 即一定要先声明后使用 暂时性死区 待理解 不允许重复声明 2 块级作用域 内层不影响外层 3 const命令 const声明一个常量
  • JAVA 什么是多态?

    面向对象编程有三大特性 封装 继承 多态 封装隐藏了类的内部实现机制 可以在不影响使用的情况下改变类的内部结构 同时也保护了数据 对外界而已它的内部细节是隐藏的 暴露给外界的只是它的访问方法 继承是为了重用父类代码 两个类若存在IS A的关
  • Ag Grid 组件 Vue Data Grid: Components

    目录 声明自定义组件 内联 组件 本地声明的组件 外部化的 JavaScript 组件 js 文件 外部化单文件组件 SFC vue 文件 注册自定义组件 注册内联自定义组件 注册非内联自定义组件 1 按名称 2 直接引用 已弃用 按名称引
  • 【yolov7系列二】正负样本分配策略

    本文主要就yolov7的正负样本筛选策略 并与yolov5 yolov6进行比对 首先接着上一篇yolov7系列一 网络整体结构 填几个小坑 希望对大家没有造成困扰 如 E ELAN层 在cat后需要要conv层做特征融合 还有SPPCSP
  • python virtualenv

    文章目录 powershell 参考文章 https www cnblogs com freely p 8022923 html https blog csdn net u012206617 article details 90294421
  • Inorder Successor in BST

    Given a binary search tree and a node in it find the in order successor of that node in the BST Note If the given node h
  • UNI-APP_APP(webview)集成X5内核

    官方文档 https uniapp dcloud net cn tutorial app android x5 html 腾讯TBS x5内核仅支持Android平台 iOS只能使用自带的WKWebview 打开项目的manifest js
  • Linux awk 命令

    AWK是一种处理文本文件的语言 是一个强大的文本分析工具 之所以叫AWK是因为其取了三位创始人 Alfred Aho Peter Weinberger 和 Brian Kernighan 的Family Name的首字符 语法 awk 选项
  • Keil环境下CANopenNode移植到STM32问题记录(一)---printf重定向问题

    文章目录 问题描述 问题结决 思考 相关文章 在直接将CANopenSTM32的示例工程直接移植到Keil环境下 如果移植工程未实现printf函数重定向 则要注释掉log printf下面的printf函数 使日志打印失效 Printf
  • SQL注入之盲注

    SQL注入之盲注 前言 一 盲注分类 二 具体解析 1 基于布尔的sql盲注 首先要先了解一下sql注入截取字符串常用的函数 1 mid 函数 2 substr 函数 3 left 函数 具体注入方法 2 基于时间的SQL盲注 3 基于报错
  • Java实验3与第五周总结

    1 已知字符串 this is a test of java 按要求执行以下操作 要求源代码 结果截图 统计该字符串中字母s出现的次数 统计该字符串中子串 is 出现的次数 统计该字符串中单词 is 出现的次数 实现该字符串的倒序输出 pu
  • BT5, depends* but it is not going to be installed 解决方法

    apt get install 任何包都缺少依赖项 执行以下命令 apt get f install 然后在 apt get install package package 你要安装的包 比如我安装的open vm tools 就成功了 后
  • VSCode代码自动补全(html标签、style样式、css属性及值)

    转自 传送门 1 按CTRL SHIFT P 2 输入搜索Suggest Snippets Prevent Quick Suggestions 控制在活动代码片段内是否禁用快速建议 3 取消选中 4 按CTRL SHIFT P输入搜索 Fi
  • 利用cygwin编译cholmod以获得在windows上可用的库lib

    原文http blog parlin me complie cholmod to get library for win64 记录要点 cygwin好好装 希望哪位神人能够提供一个好用的cygwin国内mirror 编译cholmod的时候
  • 同源策略与跨域

    前言 最近业务上前端同学多次联系说访问腾讯云cos资源的时候因为跨域的问题访问不到 大致看了下腾讯云关于设置跨域访问的教程 按照前端同学给的域名等选项就给配了 而且测试下来也是好的 但是呢一直不知道什么是跨域这里就做一个简单的学习记录 一
  • 批量给多台Android手机安装APK脚本

    问题场景 测试让开发给4台手机安装测试版的APK 现实跑4次程序 于是该程序说 要是有个一次性安装多台手机APK的方法就好了 于是该脚本就出现了 并且还可以安装多个apk 以上是2个apk同时给2台设备安装 一键即可 把需要安装的apk放到
  • 百度AI接口测试案列一:车牌识别

    1 打开百度AI网站 百度AI网站 2 登录百度账号 进入控制台 选择文字识别服务 如图 3 点击立即使用 然后创建应用 之后输入应用名称 描述 随便写 并选择应用类型 之后点击 立即创建 按钮 创建完毕 点击 返回应用列表 如下图 注 A
  • linux删除文件_Linux中如何删除常用方式无法删除的文件

    前言 我们都知道 在linux删除一个文件可以使用rm命令 但是有一些特殊名称的文件使用普通的rm方式却没法删除 本文介绍linux中删除特殊名称文件的多种方式 linux文件命名规则 在介绍之前 简单说明一下linux中文件命名规则 文件
  • RegExp正则表达式-基本语法

    RegExp 百度云资料 密码 f89c 里面有详细的语法跟例子 希望对大家有帮助 课前补充 转义字符 多行字符串 字符串换行符 n RegExp作用 匹配特殊字符或有特殊搭配原则的字符的最佳选择 创建方式 直接量 推荐 new RegEx