美文网首页
正则表达式

正则表达式

作者: 肉肉与马甲线的故事 | 来源:发表于2018-01-09 18:17 被阅读0次

1.字面量形式的RegExp

var expression= / pattern / flag;

以上就是正则表达式的形式;其中 pattern(模式)部分可以是简单的、复杂的正则表达式,正则表达式可以包含 字符类、限定符(啥?)、分组(又是啥?)、向前查找以及反向引用。每一个正则可以带一个会多个 flag(标志),这个标志用来表明这个正则的行为(行为:是否全局查找,是否忽略大小写,是否多行查找)。目前正则支持3个标志:

  • g 表示全局(global)模式,使用 g 时,代表模式 pattern 被应用在所有的字符串,而非在发现字符串中第一个匹配项时就停止;
  • i 表示不区分大小写(case-inseneitive)模式,即在匹配时忽略模式与字符串的大小写;
  • m 表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在匹配项

因此,正则表达式就是一个模式与上述三个标志的组合体,不同组合产生不一样的结果。

var pattern1=/ at / g ;
// 表示匹配字符串中所有的 “ at ”

var pattern2=/ [bc]at /i;
// 表示匹配第一个出现的“ bat ”或者“ cat ”,不区分大小写

var pattern3=/ .at /gi ;
//  匹配所有以at结尾的3个字符的组合,不区分大小写

注意:正则表达式与其他语言类似。模式中使用的元字符都必须转义。元字符包括:
( [ { \ ^ * | $ ? + . } ] ),这些元字符都有一种及以上的特殊用途

//  表示匹配第一个出现的 [bc]at ”,不区分大小写
var pattern4=/ \[bc\]at / i ;

//  匹配所有的‘.at’
var pattern5=/ \.at /g ;

根据以上的例子可知,在匹配的字符串中有元字符,需要在其前面添加转义字符 \ 来进行转义,否则会将其当做有特殊意义的字符

2.构造函数形式的RegExp

var pattern_1 = new RegExp(“pattern”, "flag");

前面的例子都是使用字面量形式来定义正则表达式,另一种创建正则表达式是使用构造函数 RegExp。他接收两个参数,第一个参数是要匹配的字符串模式,另一个是标志字符串。

var pattern2=/ [bc]at /i;

var pattern_2=new RegExp(“ [bc]at ”, " i ") ;

注意:传递给 RegExp 构造函数的参数都是字符串,所以不能把字面量正则传递给构造函数,并且在某些情况下要对字符进行双重转义。所有的元字符必须双重转义,已经转义过的字符也是。例如 \n(此处的 \ 在字符串中通常会被转义为 \\ ,而在正则表达式字符串中就会变成\\\\);

字面量形式与构造函数形式对比.png

3.RegExp的实例属性
RegExp的每个实例都有以下属性,通过这些属性可以取得有关模式的各种信息。

  • global 布尔值,表示是否设置了 g 标志
  • ignoreCase 布尔值,表示是否设置了 i 标志
  • mutliline 布尔值,表示是否设置了 m 标志
  • laseIndex 整数,表示搜索下一次匹配项的开始位置
  • source 正则表达式的字符串表示,按照字面量形式返回


    image.png

4.RegExp的实例方法

4.1 exec() 方法,专为捕获组而设计的。接收一个参数,即要应用模式的字符串,然后返回包含匹配信息的数组,没有匹配的时候返回null;返回的虽然是数array的实例,但是包含两个额外的属性:indexinput。其中index表示匹配项在字符串中的位置,而input表示应用正则表达式的字符串,在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的项

    var test="mom and dad and baby";
    var pattern=/mom (and dad (and baby)?)?/gi;
    var mat=pattern.exec(test);
    console.log(mat);  
打印结果.png

4.2 test() 方法,接收一个字符串参数,当该参数与模式匹配则返回true,否则返回false。

5.RegExp构造函数属性
这些属性适用于作用域中的所有正则表达式,并且基于所执行的最近一次的正则操作而变化,这些属性可以通过两种方式访问


两种访问属性的方式.png

使用这些属性可以从exec()与test()方法执行操作中提取出更具体的信息。


执行方法操作后访问属性.png

相关文章

  • Linux命令行与Shell脚本编程大全-shell正则表达式

    本章内容: 定义正则表达式 了解基本正则表达式 扩展正则表达式 创建正则表达式 定义正则表达式 正则表达式是你定义...

  • 正则相关

    正则表达式基本语法 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 正则表达式逻辑或...

  • 正则表达式系列-1

    正则表达式系列-1正则表达式系列-2正则表达式系列-3正则表达式系列-4 什么是正则表达式 正则表达式就是用事先定...

  • 正则表达式

    正则表达式 - 教程正则表达式 - 简介正则表达式 - 语法正则表达式 - 元字符正则表达式 - 运算符优先级正则...

  • Python基础入门 - 正则表达式与综合实战

    1. 初识正则表达式 1.1 介绍 步骤介绍正则表达式入门及应用正则表达式的进阶正则表达式案例 1.2 正则表达式...

  • Java正则表达式参考

    Java正则表达式入门 java正则表达式应用 深入浅出之正则表达式(一) 深入浅出之正则表达式(二) 正则表达式...

  • 正则表达式

    正则表达式 正则表达式就是记录文本规则的代码 正则表达式常用的元字符 正则表达式常用的限定符 正则表达式举例:这里...

  • Python爬虫(十)_正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • python正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • 正则表达式

    了解正则表达式基本语法 能够使用JavaScript的正则对象 正则表达式简介 什么是正则表达式 正则表达式:用于...

网友评论

      本文标题:正则表达式

      本文链接:https://www.haomeiwen.com/subject/yoownxtx.html