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 设置标题的自动翻转
Oct 03 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
May 23 Javascript
一个简单的Node.js异步操作管理器分享
Apr 29 Javascript
jQuery中[attribute^=value]选择器用法实例
Dec 31 Javascript
bootstrap滚动监控器使用方法解析
Jan 13 Javascript
利用Node.js+Koa框架实现前后端交互的方法
Feb 27 Javascript
ES6新特性一: let和const命令详解
Apr 20 Javascript
详解Node项目部署到云服务器上
Jul 12 Javascript
p5.js入门教程之图片加载
Mar 20 Javascript
JS实现马赛克图片效果完整示例
Apr 13 Javascript
javascript/jquery实现点击触发事件的方法分析
Nov 11 jQuery
原型和原型链 prototype和proto的区别详情
Nov 02 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
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
JavaScript创建命名空间的5种写法
2014/06/24 PHP
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
PHP输出两个数字中间有多少个回文数的方法
2015/03/23 PHP
smarty模板数学运算示例
2016/12/11 PHP
PHP处理bmp格式图片的方法分析
2017/07/04 PHP
PHP多进程编程之僵尸进程问题的理解
2017/10/15 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
2018/05/31 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
2016/09/04 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
JS实现压缩上传图片base64长度功能
2019/12/03 Javascript
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
python入门之井字棋小游戏
2020/03/05 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
精伦电子Java笔试题
2013/01/16 面试题
什么是事务?事务有哪些性质?
2012/03/11 面试题
商务英语求职自荐信范文
2013/12/24 职场文书
电力公司个人求职信范文
2014/02/04 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书
2015年度工程师评职称工作总结
2015/10/14 职场文书
python实现简单聊天功能
2021/07/07 Python
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏
基于docker安装zabbix的详细教程
2022/06/05 Servers
GO中sync包自由控制并发示例详解
2022/08/05 Golang