首页 > 其他分享 >【ES6】正则表达式的拓展

【ES6】正则表达式的拓展

时间:2023-01-16 20:37:55浏览次数:32  
标签:ES6 匹配 正则表达式 修饰符 拓展 test RegExp


【ES6】正则表达式的拓展

  • ​​一、什么是正则表达式​​
  • ​​二、正则表达式常用技术介绍​​
  • ​​1)正则表达式的写法​​
  • ​​I. 修饰符​​
  • ​​II. 匹配模式​​
  • ​​2)正则表达式的RegExp对象​​
  • ​​3)正则表达式的常用JS接口​​
  • ​​三、ES6新增正则表达式功能特性​​
  • ​​1)RegExp对象的拓展​​
  • ​​I.构造函数的拓展​​
  • ​​II.RegExp对象属性的拓展​​
  • ​​III.RegExp对象方法的拓展​​
  • ​​2)修饰符的拓展​​
  • ​​I. u修饰符​​
  • ​​II. i修饰符​​
  • ​​III. y修饰符​​
  • ​​查看更多ES6教学文章:​​
  • ​​参考文献​​

引言:ES6增强了正则表达式的接口和一些性能,部分原因是ES6加强了对Unicode的支持,拓展了字符串对象。


在介绍

​ES6​​的正则表达式的拓展之前,我们先来复习一下,正则表达式和它的语法。

一、什么是正则表达式

        正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
        搜索模式可用于文本搜索和文本替换。

  • 正则表达式是由一个字符序列形成的搜索模式。
  • 当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。
  • 正则表达式可以是一个简单的字符,或一个更复杂的模式。
  • 正则表达式可用于所有文本搜索和文本替换的操作。

语法

/正则表达式主体/修饰符(可选)

实例

var rex=/[a-z]/i;

实例解析
/[a-z]/i 是一个正则表达式。
[a-z] 是一个正则表达式主体 (用于检索),也是一种匹配模式。
i 是一个修饰符 ,i的含义是:不区分大小写。

二、正则表达式常用技术介绍

1)正则表达式的写法

I. 修饰符

修饰符可以在全局搜索中不区分大小写:

修饰符

描述

i

执行对大小写不敏感的匹配。

g

执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

m

执行多行匹配。

II. 匹配模式

方括号用于查找某个范围内的字符:

表达式

描述

[abc]

查找方括号之间的任何字符。

[0-9]

查找任何从 0 至 9 的数字。

(x|y)

查找任何以 | 分隔的选项。

元字符是拥有特殊含义的字符:

元字符

描述

\d

查找数字。

\s

查找空白字符。

\b

匹配单词边界。

\uxxxx

查找以十六进制数 xxxx 规定的 Unicode 字符。

量词:

量词

描述

n+

匹配任何包含至少一个 n 的字符串。

n*

匹配任何包含零个或多个 n 的字符串。

n?

匹配任何包含零个或一个 n 的字符串。

2)正则表达式的RegExp对象

        简单来说,对于定义正则表达式的模式​​var rex=/[a-z]/g;​​​等价于​​var rex=new RegExp("[a-z]",“g”);​​         RegExp对象还有一些属性和方法,这里只介绍test()方法和exec()方法:

  • ​test()​​方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
  • ​exec()​​ 方法用于检索字符串中的正则表达式的匹配。该方法返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

3)正则表达式的常用JS接口

  • ​search() ​​: 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。
  • ​replace() ​​: 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

三、ES6新增正则表达式功能特性

1)RegExp对象的拓展

I.构造函数的拓展

        在ES5中,RegExp对象的构造函数只接受字符串作为参数:​​var rex=new RegExp(“xyz”,“g”);​​​。
        在ES6中,允许RegExp构造函数接受正则表达式作为参数,这是返回值就是这个正则表达式:​​​var rex=new RegExp(/xyz/g);​​。

II.RegExp对象属性的拓展

  • ​sticky​​属性:表示是否设置了y修饰符,返回布尔值。
  • ​flags​​属性:返回正则表达式的修饰符。

III.RegExp对象方法的拓展

        字符串对象一共有4个方法可以使用正则表达式:​​match()、replace()、search()、split()​​​。
        ES6将这4个方法在语言内部全部调用RegExp的实例方法。

2)修饰符的拓展

I. u修饰符

        ES6对正则表达式添加了u修饰符,含义为“Unicode模式”,用来处理大于\uFFFF的Unicode字符。也就是说,可以正确处理4个字符的UTF-16编码,即一个中文汉字。

/\u{61}/.test('a'); // false
/\u{61}/u.test('a'); // true
/\u{20bb7}/u.test('

标签:ES6,匹配,正则表达式,修饰符,拓展,test,RegExp
From: https://blog.51cto.com/u_15942590/6010763

相关文章

  • 【ES6】变量的解构赋值
    【ES6】变量的解构赋值​​一、什么叫解构赋值?​​​​二、解构赋值有哪些分类?写法?​​​​1)对数组的解构赋值​​​​2)对对象的解构赋值​​​​3)对字符串的解构赋值​......
  • 【ES6】字符串的拓展
    【ES6】字符串的拓展​​一、为什么ES6要进行字符拓展?​​​​二、ASCLL码、Unicode编码、UTF-8编码的异同​​​​三、ES6新增的字符串接口​​​​1)codePointAt()​​​​......
  • 【ES6】 let与const详解
    【ES6】let与const详解ES6,全称为ECMAScript6。ES6与js的关系是:前者是后者的规格,后者是前者的实现。换句话说,ES是js的国际化版本,js是ES的子集。1.letlet命令和var命令是差......
  • 【ES6】数值的拓展
    【ES6】数值的拓展​​二、Number.isFinite(),Number.isNaN()​​​​三、Number.parseInt(),Number.parseFloat()​​​​四、Number.isInteger​​​​五、Number.EPSILON​......
  • 【ES6】数组的拓展
    【ES6】数组的拓展​​一、Array.from()方法​​​​二、Array.of()方法​​​​三、数组的copyWithin()方法​​​​四、数组的find()和findIndex()方法​​​​五、数组的......
  • 【ES6】ES6编程规范 编程风格
    【ES6】ES6编程规范编程风格​​一、定义变量的规范​​​​二、字符串​​​​三、对象​​​​四、数组​​​​五、函数​​​​查看更多ES6教学文章:​​​​参考文献​......
  • 【ES6】Module模块详解
    【ES6】Module模块详解​​一、Module的由来​​​​二、严格模式​​​​三、export命令​​​​四、import命令​​​​查看更多ES6教学文章:​​​​参考文献​​引言:由于......
  • 【ES6】JS类的用法class
    【ES6】JS类的用法class​​一、概述​​​​二、构造函数constructor​​​​三、静态方法与静态变量​​​​查看更多ES6教学文章:​​​​参考文献​​引言:由于JS之前一直......
  • 【ES6】异步操作和async函数
    【ES6】异步操作和async函数​​一、基本概念​​​​二、回调函数​​​​三、Promise​​​​四、async函数​​​​查看更多ES6教学文章:​​​​参考文献​​引言:ES6新增......
  • 【ES6】Generator函数详解
    【ES6】Generator函数详解​​一、Generator函数简介​​​​基本概念​​​​函数写法​​​​yield关键字介绍​​​​二、next方法的参数​​​​三、for...of循环​​​......