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 相关文章推荐
推荐10个超棒的jQuery工具提示插件
Oct 11 Javascript
jquery 插件学习(四)
Aug 06 Javascript
javascript查询字符串参数的方法
Jan 28 Javascript
jQuery实现动画效果circle实例
Aug 06 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
Dec 01 Javascript
详解如何使用Vue2做服务端渲染
Mar 29 Javascript
简单实现JS上传图片预览功能
Apr 14 Javascript
Angular2学习教程之ng中变更检测问题详解
May 28 Javascript
vue学习笔记之v-if和v-show的区别
Sep 20 Javascript
Layui 设置select下拉框自动选中某项的方法
Aug 14 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
Aug 24 Javascript
jQuery控制input只能输入数字和两位小数的方法
May 16 jQuery
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按行读取文件时删除换行符的3种方法
2014/05/04 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
VPS中使用LNMP安装WordPress教程
2014/12/28 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
PHP设计模式之适配器模式定义与用法详解
2018/04/03 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
jquery ajax中使用jsonp的限制解决方法
2013/11/22 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
常用jQuery代码分享
2015/07/14 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
js Canvas实现圆形时钟教程
2016/09/19 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
Flask框架web开发之零基础入门
2018/12/10 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
Python实现最常见加密方式详解
2019/07/13 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
瑞典在互联网上最大的宠物商店:Animail
2020/10/31 全球购物
MIKI HOUSE美国官方网上商店:日本领先的婴儿和儿童高级时装品牌
2020/06/21 全球购物
指针和引用有什么区别
2013/01/13 面试题
用Python写一个for循环的例子
2016/07/19 面试题
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
消防安全宣传标语
2014/06/07 职场文书
学生逃课检讨书
2015/02/17 职场文书
西游降魔篇观后感
2015/06/15 职场文书