美文网首页
四.正则的扩展

四.正则的扩展

作者: mamba_never_out | 来源:发表于2017-09-11 17:24 被阅读29次
RegExp构造函数

在es5中,RegExp构造函数的参数有两种情况

第一种,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag)。

var regex = new RegExp('xyz','i')
//等价于
var regex=/xyz/i;

第二种,参数是一个正则表达式,这时返回一个原有正则表达式的拷贝。

var regex=new RegExp(/xyz/i);
//等价于
var regex = new RegExp(/xyz/,'i');

但是es5不允许此时使用第二个参数添加修饰符,否则会报错。

var regex=new RegExp(/abc/ig,'i').flags

ES6 改变了这种行为。如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。而且,返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符。

y修饰符

es6位正则表达式添加了y修饰符,叫做"粘连"(sticky)修饰符。

y修饰符的作用与g修饰符类似,也是全局匹配,后一次匹配都是从上一次匹配成功的下一个位置开始。但y修饰符确保匹配必须从剩余的第一个位置开始,这也就是"粘连"的涵义。

var s='aaa_aa_a';
var r1=/a+/g;
var r2=/a+/y;
r1.exec(s) // ['aaa']
r2.exec(s) // ['aaa']

r1.exec(s) //["aa"]
r2.exec(s) // null
stick 属性

y修饰符相匹配,es6的正则对象多了sticky属性,表示是否设置了y修饰符。

var r=/hello\d/y;
r.sticky
flags 属性

es6为正则表达式新增了flags属性,会返回正则表达式,会返回正则表达式的修饰符。

// es5 的 source 属性
// 返回正则表达式的正文
/abc/ig.source
// "abc"

// es6 的 flags 属性
// 返回正则表达式的修饰符
/abc/ig.flags
// 'gu'
后行断言

javascript 语言的正则表达式,只支持先行断言( lookhead )和先行否定断言( negative lookhead ),不支持后行断言( lookbehind )和后行否定断言( negative lookbehind )。目前,有一个提案,引入后行断言,v8引擎 4.9版已经支持。

"先行断言"指的是,x只有在y前面才匹配,必须写成/x(?=y)/。比如,只匹配百分号之前的数字,要写成/\d+(?=%)。"先行否定断言"指的是,x只有不在y前面才匹配,必须写成/x(?!y)/。比如,职匹配不在百分号之前的数字,要写成/\d+(?!%)/

/\d+(?=%)/.exec('100% of US presidents have been male')  // ["100"]
/\d+(?!%)/.exec('that’s all 44 of them')                 // ["44"]

“后行断言”正好与“先行断言”相反,x只有在y后面才匹配,必须写成/(?<=y)x/。比如,只匹配美元符号之后的数字,要写成/(?<=\$)\d+/。”后行否定断言“则与”先行否定断言“相反,x只有不在y后面才匹配,必须写成/(?<!y)x/。比如,只匹配不在美元符号后面的数字,要写成/(?<!\$)\d+/

/(?<=\$)\d+/.exec('Benjamin Franklin is on the $100 bill')  // ["100"]
/(?<!\$)\d+/.exec('it’s is worth about €90')                // ["90"]

相关文章

  • 四.正则的扩展

    RegExp构造函数 在es5中,RegExp构造函数的参数有两种情况 第一种,参数是字符串,这时第二个参数表示正...

  • es6入门

    一、解构赋值 数组的解构赋值 二、 对象解构赋值 三、正则新特性 四、字符串扩展 五、数值扩展 六、数组扩展 七、...

  • Linux grep、egrep使用命令详解

    grep egrep区别grep 默认不支持扩展 但可以通过-E 选择来支持扩展正则egrep 支持扩展正则 ...

  • shell编程- 四剑客

    1.四剑客 2.正则表达式 基础正则 扩展 正则 perl正则 注意事项: 一行一行过滤 注意字符集:export...

  • ES6扩展

    字符串的扩展正则的扩展数值的扩展数组的扩展函数的扩展对象的扩展

  • ES6学习 第五章 正则的扩展

    前言 本章介绍正则的扩展。有些不常用的知识了解即可。本章原文链接:正则的扩展[https://es6.ruanyi...

  • 三剑客_grep

    grep grep 相关参数 grep + 正则表达式(扩展正则)

  • linux正则表达式详解(二) -扩展正则表达式

    上一章我们主要探讨了通配符和基础正则表达式,这章重点探讨扩展正则表达式的应用。 基本正则表达式包含: 扩展正则添加...

  • JavaScript ES6 - 正则表达式扩展

    正则扩展: 主要来与 ES5 做一个对比 (也就是语法的扩展) 1. ES6 正则新特性: 如图所示: 1. 正则...

  • Vue项目开发与规范--es6语法规范篇

    目录 简介 let const 解构赋值 正则的扩展 字符串的扩展 数值的扩展 数组的扩展 函数的扩展 对象的扩展...

网友评论

      本文标题:四.正则的扩展

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