ES6学习笔记之正则表达式和字符串正则方法分析


Posted in Javascript onApril 25, 2017

本文实例讲述了ES6正则表达式和字符串正则方法。分享给大家供大家参考,具体如下:

RegExp构造函数

在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构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。而且,返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符。

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

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

字符串的正则方法

字符串对象共有4个方法,可以使用正则表达式:match()replace()search()split()

ES6将这4个方法,在语言内部全部调用RegExp的实例方法,从而做到所有与正则相关的方法,全都定义在RegExp对象上。

String.prototype.match 调用 RegExp.prototype[Symbol.match]
String.prototype.replace 调用 RegExp.prototype[Symbol.replace]
String.prototype.search 调用 RegExp.prototype[Symbol.search]
String.prototype.split 调用 RegExp.prototype[Symbol.split]

字符串对象共有4个方法,可以使用正则表达式:match()、replace()、search()和split()。

Javascript 相关文章推荐
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
Dec 27 Javascript
js中一维数组和二位数组中的几个问题示例说明
Jul 17 Javascript
使用jquery.qrcode生成彩色二维码实例
Aug 08 Javascript
javascript的变量、传值、传址、参数之间关系
Jul 26 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
Jan 29 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
Jun 21 Javascript
JS匿名函数实例分析
Nov 26 Javascript
简述vue中的config配置
Jan 23 Javascript
vue 中引用gojs绘制E-R图的方法示例
Aug 24 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
Jan 27 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
Aug 03 Javascript
使用react-virtualized实现图片动态高度长列表的问题
May 28 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
Apr 25 #Javascript
整理一些最近经常遇到的前端面试题
Apr 25 #Javascript
Vue.js 2.0学习教程之从基础到组件详解
Apr 24 #Javascript
js实现延迟加载的几种方法
Apr 24 #Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
Apr 24 #Javascript
浅析Angular2子模块以及异步加载
Apr 24 #Javascript
Angular2使用Guard和Resolve进行验证和权限控制
Apr 24 #Javascript
You might like
一步一步学习PHP(8) php 数组
2010/03/05 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
PHP的mysqli_set_charset()函数讲解
2019/01/23 PHP
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
js的回调函数详解
2015/01/05 Javascript
jquery实现的Banner广告收缩效果代码
2015/09/02 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
js print打印网页指定区域内容的简单实例
2016/11/01 Javascript
JavaScript实现256色转灰度图
2017/02/22 Javascript
vue动态绑定class选中当前列表变色的方法示例
2018/12/19 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
解决vue-photo-preview 异步图片放大失效的问题
2020/07/29 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
2018/01/22 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
django中账号密码验证登陆功能的实现方法
2019/07/15 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
jupyter notebook清除输出方式
2020/04/10 Python
numpy中生成随机数的几种常用函数(小结)
2020/08/18 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
如何写好自荐信
2014/04/07 职场文书
市级三好学生事迹材料
2014/08/27 职场文书
欠条范文
2015/07/03 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
谢师宴家长答谢词
2015/09/30 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP
关于Javascript闭包与应用的详解
2021/04/22 Javascript
Django中的JWT身份验证的实现
2021/05/07 Python
Python词云的正确实现方法实例
2021/05/08 Python
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python