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 相关文章推荐
jQuery 剧场版 你必须知道的javascript
May 27 Javascript
javascript 函数参数限制说明
Nov 19 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
Jun 24 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
Nov 17 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
Mar 05 Javascript
JavaScript实现页面5秒后自动跳转的方法
Apr 16 Javascript
使用bootstrap实现多窗口和拖动效果
Sep 22 Javascript
js中创建对象的几种方式
Feb 05 Javascript
js控制文本框禁止输入特殊字符详解
Apr 07 Javascript
jQuery简单绑定单个事件的方法示例
Jun 10 jQuery
浅谈JavaScript的innerWidth与innerHeight
Oct 12 Javascript
微信接入之获取用户头像的方法步骤
Sep 23 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
一个域名查询的程序
2006/10/09 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
WordPress自定义时间显示格式
2015/03/27 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
2017/07/13 PHP
实现连缀调用的map方法(prototype)
2009/08/05 Javascript
JavaScript italics方法入门实例(把字符串显示为斜体)
2014/10/17 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
纯js实现图片匀速淡入淡出效果
2017/08/22 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
JS常用跨域方法实现原理解析
2020/12/09 Javascript
测试、预发布后用python检测网页是否有日常链接
2014/06/03 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
某公司的.net工程师面试题笔试题
2013/11/22 面试题
车间调度岗位职责
2013/11/30 职场文书
医院节能减排方案
2014/06/13 职场文书
上海世博会口号
2014/06/19 职场文书
模范班主任事迹材料
2014/12/17 职场文书
党校党性分析材料
2014/12/19 职场文书
商务英语求职信范文
2015/03/19 职场文书
光荣之路观后感
2015/06/12 职场文书
刘胡兰观后感
2015/06/16 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis
防止web项目中的SQL注入
2021/12/06 MySQL
浅谈Redis跟MySQL的双写问题解决方案
2022/02/24 Redis
Golang连接并操作MySQL
2022/04/14 MySQL