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 相关文章推荐
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
Mar 10 Javascript
javascript 常用代码技巧大收集
Feb 25 Javascript
ExtJS下grid的一些属性说明
Dec 13 Javascript
Javascript中的this绑定介绍
Sep 22 Javascript
一个简单的瀑布流效果(主体形式自写)
May 27 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
Jun 05 Javascript
js css3实现图片拖拽效果
Mar 04 Javascript
Angular2 http jsonp的实例详解
Aug 31 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
Sep 18 Javascript
JS实现的简单表单验证功能示例
Oct 13 Javascript
详解从Vue-router到html5的pushState
Jul 21 Javascript
在js文件中引入(调用)另一个js文件的三种方法
Sep 11 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面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
通俗易懂的php防注入代码
2010/04/07 PHP
php 变量未定义等错误的解决方法
2011/01/12 PHP
PHP生成自适应大小的缩略图类及使用方法分享
2014/05/06 PHP
php实现文件下载实例分享
2014/06/02 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
2012/12/11 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
2016/12/07 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
vue通过watch对input做字数限定的方法
2017/07/13 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
微信小程序实现卡片左右滑动效果的示例代码
2019/05/01 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
JS实现简单打字测试
2020/06/24 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
Python 读写文件的操作代码
2018/09/20 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
Python数据可视化:饼状图的实例讲解
2019/12/07 Python
基于DOM+CSS3实现OrgChart组织结构图插件
2016/03/02 HTML / CSS
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
外联部演讲稿
2014/05/24 职场文书
人事任命书格式
2014/06/05 职场文书
锦旗标语大全
2014/06/23 职场文书
IT工程师岗位职责
2014/07/04 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
学生会辞职信
2015/03/02 职场文书
趣味运动会加油词
2015/07/18 职场文书
简短的36句中秋节祝福信息语句
2019/09/09 职场文书