阅读Javascript高级程序设计第五章 -- RegExp类型总结

  对于基础教程部分, 有小伙伴不熟悉的,可以参考 正则表达式 - 教程

  1. 基础部分回顾:

  ECMASript通过RegExp类型来支持正则表达式, 语法如下

var expression = / pattern /flags;

  参数介绍: pattern部分可以是如何简单或复杂的正则表达式,可以包含字符类,限定符,分组,向前查找以及反向引用. 每个正则表达式都可以带一个或多个flags,用以标明正则表达式的行为.

  ⭕️ g: 表示全局模式,即模式将被应用与所有字符串;

  ⭕️ i: 表示不区分大小写模式;

  ⭕️ m: 表示多行模式, 即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项.

  与其他语言中的正则表达式类似, 模式中使用的所有元字符都必须转移. 正则表达式中都元字符包括

(    [    {    \    ^    &    |    )    ?    *    +    .    ]    }

  举例说明:    

let pattern1 = /at/g; //匹配字符串中所有"at"实例
let pattern2 = /[bc]at/i; // 匹配第一个"bat"或"cat", 不区分大小写
let pattern3 = /\[bc\]at/i; // 匹配第一个"[bc]at", 不区分大小写
let pattern4 = /.at/gi; //匹配所有以"at"结尾的3个字符的组合,不区分大小写
let pattern5 = /\.at/gi; // 匹配所有以".at",不区分大小写

  除以上字面量模式, 正则表达式还常采用构造函数new RegExp(pattern,flags)来定义正则表达式

let reg = new RegExp(pattern,flags);

  两者是等价的

let pattern1 = /[bc]at/i; // 匹配第一个"bat"或"cat", 不区分大小写

等价于
let pattern2 = new RegExp("[bc]at","i");

  备注: 传递个RegExp构造函数的两个参数都是字符串. 由于RegExp构造函数的模式参数是字符串, 所以在某些情况下要对字符串进行双重转义. 因此, 上面列举对元字符都必须进行双重转义.  

  2. RegExp实例属性

  ⭕️ global: 布尔值, 表示是否设置了g标志

  ⭕️ ignoreCase:  布尔值, 表示是否设置了i标志

  ⭕️ lastIndex: 整数, 表示开始搜索下一个匹配项的字符位置,从0算起

  ⭕️ multiline: 布尔值, 表示是否设置了m标志

  ⭕️ source: 正则表达式字符串表示,按照字面量形式而非传人构造函数中的字符串模式返回

  举例说明实例属性各个性质

let p1 = /\[bc\]at/g;
let p2 = new RegExp("\\[bc\\]at","g");
console.log(p1.global); // true
console.log(p1.ignoreCase); // false
console.log(p1.lastIndex); //
console.log(p1.multiline); // false
console.log(p1.source); // "\[bc\]at"
console.log(p2.source); // "\[bc\]at"

  3 正则表达式实例方法

  3.1 RegExp对象的主要方法之一是exec()  

  3.2

  4 RegExp 构造函数属性

  RegExp构造函数包含一些属性( 这些属性在其他语言中被看成是静态属性 ). 这些属性适用于作用域中所有的正则表达式,并且基于所执行的最近一次正则表达式操作而变化, 这些属性有一个长属性名和短属性名. 列表如下

  举例说明

let str = "this is number of wuhan i love you yyhan";
let reg = /(.)han/g;
if(reg.test(str)){
console.log(RegExp.input);
console.log(RegExp.$1);
console.log(RegExp.lastMatch);
console.log(RegExp.lastParen);
console.log(RegExp.leftContext);
console.log(RegExp.rightContext);
console.log(RegExp.multiline);
console.log(RegExp.name);
} console.log("写法 **********上 等价 下***********"); if(reg.test(str)){
console.log(RegExp.$_);
console.log(RegExp.$1);
console.log(RegExp["$&"]);
console.log(RegExp["$+"]);
console.log(RegExp["$`"]);
console.log(RegExp["$'"]);
console.log(RegExp["$*"]);
console.log(RegExp.name);
}

  打印结果

this is number of wuhan i love you yyhan
u
uhan
u
this is number of w
i love you yyhan
undefined
RegExp
写法 **********上 等价 下***********
this is number of wuhan i love you yyhan
y
yhan
y
this is number of wuhan i love you y
undefined
RegExp

  

    

随笔记录--RegExp类型的更多相关文章

  1. 随笔记录--Array类型

    前言:除了Object类型之外,Array类型恐怕是ECMAScript中最常用的类型了.而且,ECMAScript中数组与其他多数语言中的数组有很大差别,ECMAScript数组中的每一项可以保存任 ...

  2. RegExp类型exec()方法的返回值说明

    之前看别人写的插件经常会用到RegExp对象来验证输入,并且获取一些那时我并不晓得是什么东西的数组,来取值进行自定义的逻辑处理.今天学习了一下RegExp类型.终于有了一个初步的了解,至少不会看一会就 ...

  3. MapXtreme 随笔记录1

    最近在用MapXtreme做项目,随笔记录备忘. 声明:PubMapPara 静态类,后缀为静态类成员变量 1.加载地图 /// <summary> /// 地图工作空间文件路径 /// ...

  4. 引用类型-RegExp类型

    JavaScript高级程序设计(第三版)笔记-第五章-RegExp类型 定义正则表达式有两种方式 1.用字面量形式定义正则表达式: ver expression = /patterns/flags; ...

  5. RegExp类型,单体内置对象

    1.RegExp类型:  1)什么是正则表达式:RegExp    --是一种规则,模式    --强大的字符串匹配工具    --创建:    --使用RegExp构造函数创建:var re=new ...

  6. js中RegExp类型

    ECMAScript通过RegExp类型来支持正则表达式. var expression = / pattern / flag ; pattern可以是任意的正则表达式.每个正则都带有标志,用以正则表 ...

  7. 5.4 RegExp类型

    ECMAScript通过RegExp类型来支持正则表达式.使用下面类似Perl的语法,就可以创建一个正则表达式. var expression=/pattern/flags; 复制代码 其中的模式(p ...

  8. 《JavaScript高级程序设计》读书笔记 ---RegExp 类型

    ECMAScript 通过RegExp 类型来支持正则表达式.使用下面类似Perl 的语法,就可以创建一个正则表达式.var expression = / pattern / flags ; 其中的模 ...

  9. Javascript高级编程学习笔记(15)—— 引用类型(4)RegExp类型

    JS中处理字符串最常用的应该就是正则了 同样正则(RegExp)类型也是JS中引用类型的一种 ECMAScript通过 RegExp类型 来支持正则表达式 创建正则 var expression = ...

随机推荐

  1. appium--元素等待和屏幕截图

    元素等待 设置元素等待可以更加灵活的指定等待元素的时间,从而增强脚本的健壮性,提高执行效率 强制等待 from time import sleep sleep(5) 隐式等待 隐式等待是针对全部元素设 ...

  2. PATA1075 PAT Judge (25 分)

    The ranklist of PAT is generated from the status list, which shows the scores of the submissions. Th ...

  3. WEB前端开发职业学习路线初级完整版

    作者 | Jeskson 来源 | 达达前端小酒馆 下面小编专门为广大web前端开发职业者汇总了学习路线初级完整版,其实web前端开发工程师可算是高福利,高薪水的职业了,所以现在学习web前端开发的技 ...

  4. Sentinel: 分布式系统的流量防卫兵

    前言 在 Spring Cloud 体系中,熔断降级我们会使用 Hystrix 框架,限流通常会在 Zuul 中进行处理,Zuul 中没有自带限流的功能,我们可以自己做限流或者集成第三方开源的限流框架 ...

  5. BAT公司职级体系及薪水解密

    BAT公司职级体系及薪水解密 互联网圈有这么一句话:百度的技术,阿里的运营,腾讯的产品.那么代表互联网三座大山的BAT,内部人才体系有什么区别呢? 先谈谈腾讯的体系. 首先是腾讯. 1.职级: 腾讯职 ...

  6. [IOT] - 在树莓派的 Raspbian 系统中安装 .Net Core 3.0 运行环境

    之前在 Docker 中配置过 .Net Core 运行环境,地址:[IOT] - Raspberry Pi 4 Model B 系统初始化,Docker CE + .Net Core 开发环境配置 ...

  7. 第八节:EF Core连接MySql数据库

    一. 前提 1.安装EF Core连接MySQL的驱动,这里有两类: (1).Oracle官方出品:MySql.Data.EntityFrameworkCore (版本:8.0.17) (2).其他第 ...

  8. __attribute__((format(printf, a, b)))

    最近,在看libevent源码,第一次看到__attribute__((format(printf, a, b)))这种写法.因此,在这里记录下用法. 功能:__attribute__ format属 ...

  9. 数据库的dml、ddl和dcl的概念

    学过数据库肯定会知道DML.DDL和DCL这三种语言,这种基础概念性的东西是必须要记住的. DML(Data Manipulation Lanaguage,数据操纵语言) DML就是我们经常用到的SE ...

  10. WPF DataGird 类似Excel筛选效果 未成品

    这个本是针对MSDN上所写的代码,不过写一半不想写了. 不想浪费代码,是个半成品的半成品. 效果图: 思路: 利用PopUp来做显示层. 显示层中的数据则是绑定到Datagrid的数据. popup中 ...