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 相关文章推荐
一些有关检查数据的JS代码
Sep 07 Javascript
javascript脚本编程解决考试分数统计问题
Oct 18 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
Nov 30 Javascript
JS 实现图片直接下载示例代码
Jul 22 Javascript
jquery 实现input输入什么div图层显示什么
Jun 15 Javascript
Node.js中创建和管理外部进程详解
Aug 16 Javascript
JavaScript极简入门教程(一):基础篇
Oct 25 Javascript
javascript 兼容各个浏览器的事件
Feb 04 Javascript
jQuery实现的多屏图像图层切换效果实例
May 07 Javascript
javaScript中定义类或对象的五种方式总结
Dec 04 Javascript
微信小程序 弹框和模态框实现代码
Mar 10 Javascript
如何为你的JS项目添加智能提示与类型检查详解
Mar 12 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
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
深入了解PHP类Class的概念
2012/06/14 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
javascript document.images实例
2008/05/27 Javascript
jQuery find和children方法使用
2011/01/31 Javascript
浅析JavaScript基本类型与引用类型
2014/05/28 Javascript
浅谈jquery事件处理
2015/04/24 Javascript
jquery实现点击变换导航样式的方法
2015/08/31 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
javascript实现文件拖拽事件
2018/03/29 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
angular 实现同步验证器跨字段验证的方法
2019/04/11 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
js实现移动端轮播图滑动切换
2020/12/21 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
python判断链表是否有环的实例代码
2020/01/31 Python
如何把python项目部署到linux服务器
2020/08/26 Python
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
加拿大廉价机票预订网站:CheapOair.ca
2018/03/04 全球购物
美国LOGO设计公司:The Logo Company
2018/07/16 全球购物
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
一些Solaris面试题
2013/03/22 面试题
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
团员自我评价范文
2015/03/10 职场文书
Java基础-封装和继承
2021/07/02 Java/Android
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
基于docker安装zabbix的详细教程
2022/06/05 Servers
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS