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 相关文章推荐
可输入的下拉框
Jun 19 Javascript
javascript 必知必会之closure
Sep 21 Javascript
一个简单的弹性返回顶部JS代码实现介绍
Jun 09 Javascript
浅谈javascript中for in 和 for each in的区别
Apr 23 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
Sep 14 Javascript
JavaScript类的写法
Sep 17 Javascript
JS代码实现百度地图 画圆 删除标注
Oct 12 Javascript
html5 canvas 详细使用教程
Jan 20 Javascript
AngularJS 前台分页实现的示例代码
Jun 07 Javascript
vue在路由中验证token是否存在的简单实现
Nov 11 Javascript
如何基于JavaScript判断图片是否加载完成
Dec 28 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
Nov 06 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
linux php mysql数据库备份实现代码
2009/03/10 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
php的ajax简单实例
2014/02/27 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
Laravel中正确地返回HTTP状态码方法示例
2019/09/10 PHP
php 策略模式原理与应用深入理解
2019/09/25 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
Laravel框架源码解析之入口文件原理分析
2020/05/14 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
2015/09/11 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
Angular 表单控件示例代码
2017/06/26 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
Python实现命令行通讯录实例教程
2016/08/18 Python
程序员写Python时的5个坏习惯,你有几条?
2018/11/26 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
python3实现简单飞机大战
2020/11/29 Python
说出你对remoting 和webservice的理解和应用
2014/06/08 面试题
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
高一地理教学工作总结
2015/08/12 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python