美文网首页
(八)RegExp类型

(八)RegExp类型

作者: 萘小蒽 | 来源:发表于2019-03-18 21:30 被阅读0次

    js通过RegExp类型来支持正则表达式。

    var expression =  / pattern / flags ;
    

    模式(pattern)部分可以是任何的正则表达式。每个正则表达式都可以带一个或多个标志(flag)以表明正则表达式的行为。


    flag匹配模式支持下列3个标志

    • g ------全局(global)模式,在模式将被应用于所有字符串,而不是在匹配到第一个符合项的时候立即停止;
    
    匹配字符串中所有“at”的实例。
    var pattern = / at / g; 
    

    • i ------不区分大小写模式,在模式匹配时忽略字符串的大小写;
    ****
    匹配第一个“bat”或者“cat”,不区分大小写。
    var pattern = / [bc]at / i; 
    

    • m ------表示多行(multiline)模式,在到达一行文本末尾时还会继续查找下一行中是否存在与匹配的项;
    匹配所有以“at”结尾的三个字符的组合,不区分大小写。
    var pattern = / .at /gi; 
    

    2. 特殊元字符与转义

    正则表达式中元字符所有字符如下

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

    当前需求匹配的字符包含以上元字符的时候,比如匹配"[bc]at",那我们需要对他们进行转义。比如

    匹配第一个”[bc]at“,不区分大小写;
    var pattern = /\[bc\]at/i
    匹配所有”.at“,不区分大小写;
    var pattern2 = /\.at/gi
    

    3. RegExp实例属性

    上面的例子都是用字面量形式来写正则表达式,也是我们常用的方法。
    我们还可以使用RegExp构造函数.

    var pattern1 = /[bc]at/i;
    var pattern2 =  new RegExp("[bc]at","i");
    console.log(pattern1) // /[bc]at/i;
    console.log(pattern2)// /[bc]at/i;
    

    RegExp()方法接收两个参数,字符串模式pattern,和标志flag

    \color{red}{注意:}\需要转义的字符用法也需要双重转义:

    var pattern1 = /\[bc\]at/i; 
    var pattern2 = new RegExp("\\[bc\\]at","i");  //  “\”被转义成 “\\”
    console.log(pattern1) //  /\[bc\]at/i
    console.log(pattern2) //  /\[bc\]at/i
    

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

    • global:布尔值,表示是否设置了g(全局)标志。
    • ignoreCase:布尔值,表示是否设置了i(大小写)标志。
    • lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起。
    • multiLine:布尔值,表示是否设置了m(多行)标志。
    • source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。
      其实没有多大用处,因为这些信息全都包含在模式声明中:
    var pattern = /\[bc\]at/i;
    /\[bc\]at/i
    pattern.global;
    //false
    pattern.ignoreCase
    //true
    pattern.lastIndex
    //0
    pattern.source
    //"\[bc\]at"
    

    相关文章

      网友评论

          本文标题:(八)RegExp类型

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