ES6-正则的扩展-RegExp构造函数

1)RegExp 构造函数创建了一个正则表达式对象,用于将文本与一个模式匹配。

有关正则的详细内容请阅读 JavaScript指南 中的正则表达式章节。

以下表达式是相等的,字面量,构造函数和工厂符号。

 

/pattern/flag
new RegExp(pattern [, flag])
RegExp(pattern [, flag])

参数:

 

pattern:正则表达式的文本。

flag:如果指定,标志可以具有以下值的任意组合。

 

  g

  全局匹配;找到所有匹配,而不是在第一个匹配后停止

  i

  忽略大小写

  m

  多行; 将开始和结束字符(^和$)视为在多行上工作(也就是,分别匹配每一行的开始和结束(由 \n 或 \r 分割),而不只是只匹配整个输入字符串的最开始和最末尾处。

  u

  Unicode; 将模式视为Unicode序列点的序列

  y

  粘性匹配; 仅匹配目标字符串中此正则表达式的lastIndex属性指示的索引(并且不尝试从任何后续的索引匹配)2)在ES5中,RegExp构造函数的参数有两种情况。

 

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

 

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

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

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

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

 

 

var regex = new RegExp(/xyz/, 'i');
// Uncaught TypeError: Cannot supply flags when constructing one RegExp from another

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

 

 

new RegExp(/abc/ig, 'i').flags
// "i"

上面代码中,原有正则对象的修饰符是 ig ,它会被第二个参数 i 覆盖。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值