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打开word文档的实现代码(c#)
Apr 16 Javascript
JavaScript 事件绑定及深入
Apr 13 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
Aug 27 Javascript
jQuery中hover与mouseover和mouseout的区别分析
Dec 24 Javascript
深入理解(function(){... })();
Aug 16 Javascript
JavaScript实现弹窗效果代码分析
Mar 09 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
Jul 09 Javascript
Angularjs 手写日历的实现代码(不用插件)
Oct 18 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
Jun 17 Javascript
jQuery操作元素追加内容示例
Jan 10 jQuery
基于node+vue实现简单的WebSocket聊天功能
Feb 01 Javascript
js中实现继承的五种方法
Jan 25 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脚本的10个技巧(1)
2006/10/09 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
PHP实现的堆排序算法详解
2017/08/17 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
Prototype1.5 rc2版指南最后一篇之Position
2007/01/10 Javascript
node+express+jade制作简单网站指南
2014/11/26 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
基于JavaScript的操作系统你听说过吗?
2016/01/28 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
jQuery右下角悬浮广告实例
2016/10/17 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
2016/11/02 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
vue.js自定义组件directives的实例代码
2018/11/09 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
傻瓜式vuex语法糖kiss-vuex整理
2018/12/21 Javascript
vue将后台数据时间戳转换成日期格式
2019/07/31 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
Python爬虫框架Scrapy实战之批量抓取招聘信息
2015/08/07 Python
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
python实现坦克大战
2020/04/24 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
零件设计自荐信范文
2013/11/27 职场文书
咖啡蛋糕店创业计划书
2014/01/28 职场文书
伦敦奥运会口号
2014/06/13 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
2014年度思想工作总结
2014/11/27 职场文书
五四青年节活动总结
2015/02/10 职场文书
商场广播稿范文
2015/08/19 职场文书
react国际化react-intl的使用
2021/05/06 Javascript