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 调试器简介
Feb 21 Javascript
javascript 中的 delete及delete运算符
Nov 15 Javascript
JavaScript类型系统之Object详解
Jan 07 Javascript
全面解析Bootstrap中nav、collapse的使用方法
May 22 Javascript
浅析JavaScript中命名空间namespace模式
Jun 22 Javascript
Javascript 函数的四种调用模式
Nov 05 Javascript
React中嵌套组件与被嵌套组件的通信过程
Jul 11 Javascript
vue引入axios同源跨域问题
Sep 27 Javascript
js实现每日签到功能
Nov 29 Javascript
vue实现可视化可拖放的自定义表单的示例代码
Mar 20 Javascript
Vue触发隐藏input file的方法实例详解
Aug 14 Javascript
vue组件开发之tab切换组件使用详解
Aug 21 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保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
2017/04/20 PHP
脚本吧 - 幻宇工作室用到js,超强推荐expand.js
2006/12/23 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
jQuery的position()方法详解
2015/07/19 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
JS实现图片预加载之无序预加载功能代码
2017/05/12 Javascript
使用JavaScript进行表单校验功能
2017/08/01 Javascript
详解基于vue的移动web app页面缓存解决方案
2017/08/03 Javascript
webpack之devtool详解
2018/02/10 Javascript
小程序图片剪裁加旋转的示例代码
2018/07/10 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
vue设置动态请求地址的例子
2019/11/01 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
python实现封装得到virustotal扫描结果
2014/10/05 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
在线服装零售商:SheIn
2016/07/22 全球购物
荷兰优雅女装网上商店:Heine
2016/11/14 全球购物
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
what is the difference between ext2 and ext3
2013/11/03 面试题
银行存款证明样本
2014/01/17 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
2014年党的群众路线整改措施思想汇报
2014/10/12 职场文书
初中作文评语集锦
2014/12/25 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript
前端canvas中物体边框和控制点的实现示例
2022/08/05 Javascript