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面向对象之Javascript 继承
May 04 Javascript
深入理解javascript变量声明
Nov 20 Javascript
Javascript基础教程之函数对象和属性
Jan 18 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
Aug 09 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
Oct 12 Javascript
js实现文字无缝向上滚动
Feb 16 Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
May 12 Javascript
jQuery实现动态添加节点与遍历节点功能示例
Nov 09 jQuery
用Object.prototype.toString.call(obj)检测对象类型原因分析
Oct 11 Javascript
创建echart多个联动的示例代码
Nov 23 Javascript
Vue中img的src是动态渲染时不显示的解决
Nov 14 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
Jul 19 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
php5.2时间相差8小时
2007/01/15 PHP
php过滤危险html代码
2008/08/18 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
PHP模板引擎Smarty的缓存使用总结
2014/04/24 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
js 蒙版进度条(结合图片)
2010/03/10 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
js格式化时间小结
2014/11/03 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
NodeJS 中Stream 的基本使用
2018/07/30 NodeJs
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
vue.config.js中配置Vue的路径别名的方法
2020/02/11 Javascript
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
haskell实现多线程服务器实例代码
2013/11/26 Python
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
python开发之list操作实例分析
2016/02/22 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
python障碍式期权定价公式
2019/07/19 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
EJB3推出JPA的原因
2013/10/16 面试题
幼师自我鉴定范文
2013/10/01 职场文书
税务会计岗位职责
2014/02/18 职场文书
机关干部四风问题自我剖析及整改措施
2014/10/26 职场文书
2014年教务处工作总结
2014/12/03 职场文书
医院病假条范文
2015/08/17 职场文书
mysql数据插入覆盖和时间戳的问题及解决
2022/03/25 MySQL
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python