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 相关文章推荐
几款极品的javascript压缩混淆工具
May 16 Javascript
jQuery 拖动层(在可视区域范围内)
May 24 Javascript
js中的如何定位固定层的位置
Jun 15 Javascript
JavaScript中的splice()方法使用详解
Jun 09 Javascript
js实现登陆遮罩效果的方法
Jul 28 Javascript
JS中取二维数组中最大值的方法汇总
Apr 17 Javascript
jquery弹出遮掩层效果【附实例代码】
Apr 28 Javascript
浅谈jQuery双事件多重加载的问题
Oct 05 Javascript
node.js调用Chrome浏览器打开链接地址的方法
May 17 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
Aug 24 Javascript
vue引入axios同源跨域问题
Sep 27 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
Jun 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设计模式 Decorator(装饰模式)
2011/06/26 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
js变换显示图片的实例
2013/04/16 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
AngularJS使用ng-repeat指令实现下拉框
2016/08/23 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
jQuery实现复制到粘贴板功能
2017/02/11 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
2017/12/27 jQuery
小程序清理本地缓存的方法
2018/08/17 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
Python中的探索性数据分析(功能式)
2017/12/22 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
Python版中国省市经纬度
2020/02/11 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
2020/03/02 Python
Python decorator拦截器代码实例解析
2020/04/04 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
2020/04/09 Python
装饰活动策划方案
2014/02/11 职场文书
怎样写好自我评价呢?
2014/02/16 职场文书
法院个人总结
2015/03/03 职场文书
小学教师党员承诺书
2015/04/27 职场文书