正则表达式

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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容