美文网首页
Chrome 正则表达式新特性

Chrome 正则表达式新特性

作者: dolby_xiaowen | 来源:发表于2017-07-28 17:56 被阅读0次

    Google V8团队提出并设计了几个新特性来使得JavaScript的正则表达式更为强大。这些特性当前(2017-7-28)处于Stage3的阶段。访问chrome://flags/#enable-javascript-harmony开启这些特性体验。

    命名捕获

    正则表达式有所谓的分组捕获,可以将捕获的内容分组,目前而言,开发者只能根据捕获组的序号获得这些捕获分组,这样带来的两个问题是,当分组嵌套或者分组数发生改变时,代码会变得难以处理。比如:

    /(?:(.)(.(?<=[^(])(.)))/  //最后一个分组的序号是?
    
    /(a)(b)(c)\3\2\1/  // 捕获abccba
    /(.)(a)(b)(c)\4\3\2/   //当添加一个需求时,所有序号都需要改变
    

    命令捕获,与Java等语言一样,可以让开发者对分组进行命名并引用。测试如下:


    通过在分组中插入<groupname>标签,可以对捕获分组进行命名。可以用字符串的replace方法测试一下:

    const pattern = /(?<fst>a)(?<snd>b)/;
    'ab'.replace(pattern,'$<snd>$<fst>'); //'ba'
    'ab',replace(pattern,(match,...groups, o, s,{fst, snd}) => fst + snd);
    

    反向断言

    与Perl等语言一致,JavaScript的反向断言语法如下:

    /(?<=\$)\d+/.exec('$1 is worth about ¥123');  // ['1']
    /(?<!\$)\d+/.exec('$1 is worth about ¥123');  // ['123']
    

    References

    Upcoming Regular Expression Features

    相关文章

      网友评论

          本文标题:Chrome 正则表达式新特性

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