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 设计模式 推荐
Oct 28 Javascript
jQuery的Ajax时无响应数据的解决方法
May 25 Javascript
让浏览器非阻塞加载javascript的几种方法小结
Apr 25 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
Jun 26 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
Mar 02 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
Sep 09 Javascript
Javascript动画效果(2)
Oct 11 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
Dec 30 Javascript
JS+DIV实现的卷帘效果示例
Mar 22 Javascript
JavaScript正则表达式简单实用实例
Jun 23 Javascript
vue-cli随机生成port源码的方法
Sep 02 Javascript
在Vue中创建可重用的 Transition的方法
Jun 02 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 IP及IP段进行访问限制的代码
2008/12/17 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
php计算数组不为空元素个数的方法
2014/01/27 PHP
php二分查找二种实现示例
2014/03/12 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
分享5个非常有用的Laravel Blade指令
2018/05/30 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
2013/02/01 Javascript
SeaJS 与 RequireJS 的差异对比
2014/12/08 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
详解javascript函数的参数
2015/11/10 Javascript
Express的路由详解
2015/12/10 Javascript
JQuery解析XML数据的几个简单实例
2016/05/18 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
js 数组详细操作方法及解析合集
2018/06/01 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
2018/09/30 Javascript
python del()函数用法
2013/03/24 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
2016/07/02 Python
Python+tkinter使用80行代码实现一个计算器实例
2018/01/16 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
python游戏地图最短路径求解
2019/01/16 Python
详解Django-restframework 之频率源码分析
2019/02/27 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
详解python pandas 分组统计的方法
2019/07/30 Python
python re的findall和finditer的区别详解
2020/11/15 Python
Pycharm 如何一键加引号的方法步骤
2021/02/05 Python
Chemist Warehouse中文网:澳洲连锁大药房
2021/02/05 全球购物
英文导游欢迎词
2014/01/11 职场文书
2015年社区妇联工作总结
2015/04/21 职场文书
开工典礼致辞
2015/07/29 职场文书
2019数学教师下学期工作总结
2019/06/27 职场文书
python 如何在list中找Topk的数值和索引
2021/05/20 Python