ES6正则拓展

字符串的正则方法

字符串对象共有 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]

y 修饰符 

除了u修饰符,ES6 还为正则表达式添加了y修饰符,叫做“粘连”(sticky)修饰符。

y修饰符的作用与g修饰符类似,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始。不同之处在于,g修饰符只要剩余位置中存在匹配就可,

y修饰符确保匹配必须从剩余的第一个位置开始,这也就是“粘连”的涵义。

var s = ‘aaa_aa_a‘;
var r1 = /a+/g;
var r2 = /a+/y;

r1.exec(s) // ["aaa"]
r2.exec(s) // ["aaa"]

r1.exec(s) // ["aa"]
r2.exec(s) // null

上面代码有两个正则表达式,一个使用g修饰符,另一个使用y修饰符。这两个正则表达式各执行了两次,第一次执行的时候,两者行为相同,剩余字符串都是_aa_a。由于g修饰没有位置要求,所以第二次执行会返回结果,而y修饰符要求匹配必须从头部开始,所以返回null

String.prototype.matchAll

var regex = /t(e)(st(\d?))/g;
var string = ‘test1test2test3‘;

var matches = [];
var match;
while (match = regex.exec(string)) {
  matches.push(match);
}

matches
// [
//   ["test1", "e", "st1", "1", index: 0, input: "test1test2test3"],
//   ["test2", "e", "st2", "2", index: 5, input: "test1test2test3"],
//   ["test3", "e", "st3", "3", index: 10, input: "test1test2test3"]
// ]

原文地址:https://www.cnblogs.com/cmy1996/p/9291110.html

时间: 2024-10-15 02:39:25

ES6正则拓展的相关文章

Es6数值拓展

  Es6数值拓展 一,Number扩展 1,ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示. 将0b和0o前缀的字符串数值转为十进制,要使用Number方法 Number('0b111')  // 7 Number('0o10')  // 8 2,Number.isFinite()用来检查一个数值是否为有限的(finite). Number.isFinite(0.8); // true Number.isFinite(NaN); // false Nu

《ES6标准入门》29~48Page 字符串拓展 正则拓展

1.字符串的拓展 ES3允许使用类似\u0061这样的形式来表示字符,其中的数字是Unicode-8编码. 但如果超出\uffff的字符,必须使用双字节的形式表达,例如 \uD842\uDFB7. 在ES6中,可以用\u{20BB7}这种形式表示,其中数字是Unicode-16编码. 对于需要Unicode-16编码存储的字符,ES认为有2个字符.此时使用String.codePoinAt()方法,可以准确的识别字符串中的字符,如果需要遍历,则需要使用for...of循环. 与此相对,Strin

【转】es6的拓展运算符 spread ...

原文:https://blog.csdn.net/qq_30100043/article/details/53391308 The rest parameter syntax allows us to represent an indefinite number of arguments as an array. Syntax function f(a, b, ...theArgs) { // ... } ---------------------------------------------

es6函数的rest参数和拓展运算符(...)的解析

es6的新特性对函数的功能新增加了rest参数和...的拓展运算符.这是两个什么东西呢? 先来看一个问题:如何获取一个函数除了定义的参数之外的其他参数?传统的做法是借助函数的arguments关键字来获取的. 方法如下: function add(a,b){ var i=2,rest=[]; if(arguments.length>2){ for(i;i<arguments.length;i++){ rest.push(arguments[i]); } } return rest; } con

js-正则表达式、ES6--(4)正则的扩展

2019-10-27 学习内容: 两大部分:js正则匹配.es6正则扩展 补充: 1.什么叫先行断言? “先行断言”指的是,x只有在y前面才匹配,必须写成/x(?=y)/.比如,只匹配百分号之前的数字,要写成/\d+(?=%)/.“先行否定断言”指的是,x只有不在y前面才匹配,必须写成/x(?!y)/.比如,只匹配不在百分号之前的数字,要写成/\d+(?!%)/. 2.什么叫后行断言? “后行断言”正好与“先行断言”相反,x只有在y后面才匹配,必须写成/(?<=y)x/.比如,只匹配美元符号之后

ES6 之reduce的高级技巧

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值.reduce() 方法接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce() 的数组. reduce() 的几个强大用法: 数组求和 var total = [ 0, 1, 2, 3 ].reduce(( acc, cur ) => { return acc + cur }, 0); console.log(total) // 6 二维数组转为一维数组 v

前端网站集合

原网址https://segmentfault.com/a/1190000007062464 内容精简 资源这么多,多看看多学习再总结肯定是好的.多读读就算看重了不算浪费时间,毕竟一千个读者就有一千个林黛玉,还有温故而知新,说不定多读一些内容,就发现惊喜了呢.不过,在此也精简一些内容,就1~2项,只供参考.更多内容细看分类. 知乎:程序员应该如何注意身体健康? js:JavaScript 标准参考教程 js:JavaScript 秘密花园 Es6:ECMAScript 6入门 Es6:深入浅出E

鸟书shell 学习笔记(二) shell中正则表达式相关

通配符与正则表达式的区别 通配符是bash原生支持的语法,正则表达式是处理字符串的一种表示方式, 正则表达式需要支持的工具支持才可以 语系设置 : export LANG=C grep alias 设置 : grep --color=auto grep 的一些高级参数 grep [-A] [-B] '搜寻字符串' filename //同时输出之前的k行和之后的m行 -A : 后面可加数字,表示列出改行以及之后的n行 -B : 列出前面几行 搜寻关键字如果中间使用正则表达式的话,则正则表达式部分

javascript正则表达式介绍

正则表达式就是一个用来描述字符模式的对象.它被用来在文本中执行模式匹配(pattern-matching)以及”查找-替换”(search-and-replace)的任务.javascript中正则的风格类似Perl中正则的风格. 创建 var reg = new RegExp(pattern,modifiers);或var reg = /pattern/modifiers; modifiers包括 g : 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)如'Hey, Is this al