阅读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. wal2json Dockerfile

    以下是一个wal2json pg扩展的dockerfile,方便测试使用 dockerfile FROM postgres:11.2 AS build ENV VERSION 1_0 RUN buil ...

  2. CSP2019 Emiya 家今天的饭 题解

    这题在考场上只会O(n^3 m),拿了84分.. 先讲84分,考虑容斥,用总方案减去不合法方案,也就是枚举每一种食材,求用它做超过\(\lfloor \frac{k}{2} \rfloor\) 道菜的 ...

  3. MacBook安装WIN7开机黑屏的解决办法

    同事的一台Macbook,全盘用diskgenius格式化为MBR分区,支持BIOS启动,安装ghost版本的WIN7,开机黑屏,看了网上的帖子没有用,插入启动盘按option键选择从优盘启动,用di ...

  4. Oracle--DBV命令行工具用法详解及坏块修复

    一,介绍 DBV(DBVERIFY)是Oracle提供的一个命令行工具,它可以对数据文件物理和逻辑两种一致性检查.但是这个工具不会检查索引记录和数据记录的匹配关系,这种检查必须使用analyze va ...

  5. django实战(四)--修改数据

    这节我们实现修改数据的功能,惯例,还是先上代码: urls.py urlpatterns=[ path('curd/edit/',views.curd_edit,name='curdedit'), p ...

  6. 大话设计模式Python实现-装饰模式

    装饰模式(Decorator Pattern):动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活. 下面是一个给人穿衣服的过程,使用装饰模式: #!/usr/bin/en ...

  7. Shell脚本——显示系统上的登录用户数

    写一个脚本showlogged.sh,其用法格式为: showlogged.sh -v -c -h|--help 其中,-h选项只能单独使用,用于显示帮助信息:-c选项时,显示当前系统上登录的所有用户 ...

  8. 探索FFmpeg

    Part1 :FFmpeg简介 FFmpeg定义 FFmpeg是一款音视频编解码工具,为开发者提供了大量音视频处理接口. FF指的是"Fast Forward" FFmpeg历史 ...

  9. scala练习题--万年历

     使用方法去完成 import scala.io.StdIn object work1 { def main(args: Array[String]): Unit = { // 1.先输出提示语句,并 ...

  10. 我自己整理的 Linux 常用命令

    1.查看文件安装路径: 由于软件安装的地方不止一个地方,所有先说查看文件安装的所有路径(地址). 这里以 xsp 为例.比如说我安装了xsp,但是不知道文件都安装在哪些地方.放在哪些文件夹里,可以用下 ...