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 相关文章推荐
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
Oct 31 Javascript
上传的js验证(图片/文件的扩展名)
Apr 25 Javascript
jquery中event对象属性与方法小结
Dec 18 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
Jul 31 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
Nov 30 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
Jul 03 Javascript
使用axios实现上传图片进度条功能
Dec 21 Javascript
vue初尝试--项目结构(推荐)
Jan 30 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
Apr 01 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
Apr 25 Javascript
通过JS深度判断两个对象字段相同
Jun 14 Javascript
vue源码nextTick使用及原理解析
Aug 13 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分页时出现的Fatal error的解决方法
2011/04/18 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
功能强大的php文件上传类
2016/08/29 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
PHP获取指定日期是星期几的实现方法
2016/11/30 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
使用onbeforeunload属性后的副作用
2007/03/08 Javascript
用jquery存取照片的具体实现方法
2013/06/30 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
JavaScript实现简单轮播图效果
2018/12/01 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
vue视频播放插件vue-video-player的具体使用方法
2019/11/08 Javascript
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
jQuery实现视频展示效果
2020/05/30 jQuery
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
2017/09/05 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
美国探亲签证邀请信
2014/02/05 职场文书
物流专员岗位职责
2014/02/17 职场文书
企业办公室岗位职责
2014/03/12 职场文书
七匹狼男装广告词
2014/03/21 职场文书
离职感谢信
2015/01/21 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js
MySQL池化框架学习接池自定义
2022/07/23 MySQL
如何用H5实现好玩的2048小游戏
2022/07/23 HTML / CSS