ES6 - 正则表达式


正则表达式是描述字符模式的对象。正则表达式通常缩写为“ regex ”或“ regexp ”。

JavaScript RegExp类表示正则表达式,String 和 RegExp 都定义了使用正则表达式对文本执行强大的模式匹配以及搜索和替换功能的方法。

正则表达式可以定义为 -

var pattern = new RegExp(pattern, attributes); 
OR 
var pattern = /pattern/attributes;

该属性可以具有以下值的任意组合。

先生编号 属性及描述
1

G

全球匹配

2

忽略大小写

3

中号

多行;将开头和结尾字符(^ 和 $)视为在多行上工作(即匹配每行的开头或结尾(由 \n 或 \r 分隔),而不仅仅是整个输入字符串的开头或结尾)

4

U

统一码;将模式视为 unicode 代码点序列

5

黏; 仅与目标字符串中此正则表达式的 lastIndex 属性指示的索引匹配(并且不会尝试与任何后续索引匹配)

构建正则表达式

括号

在正则表达式上下文中使用时,方括号 ([]) 具有特殊含义。它们用于查找一系列字符。

先生编号 表达与描述
1

[...]

括号之间的任意一个字符

2

[^...]

不在括号之间的任何一个字符

3

[0-9]

它匹配从 0 到 9 的任何十进制数字

4

[阿兹]

它匹配从小写a到小写z的任何字符

5

[AZ]

它匹配从大写A到大写 Z的任何字符

6

[aZ]

它匹配从小写a到大写 Z 的任何字符

上面显示的范围是一般范围;您还可以使用范围 [0-3] 匹配从 0 到 3 的任何十进制数字,或使用范围 [bv] 匹配从 b 到 v 的任何小写字符。

量词

括号内的字符序列和单个字符的出现频率或位置可以用特殊字符来表示。每个特殊字符都有特定的含义。+ 、*、?$标志都遵循字符序列。

先生编号 表达与描述
1

p+

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

2

p*

它匹配任何包含零个或多个p 的字符串

3

p?

它匹配任何包含一个或多个p 的字符串

4

p{N}

它匹配任何包含N p序列的字符串

5

p{2,3}

它匹配任何包含两个或三个p序列的字符串

6

p{2, }

它匹配任何包含至少两个p的序列的字符串

7

p$

它匹配任何结尾带有p 的字符串

8

^p

它匹配任何以p开头的字符串

9

[^a-zA-Z]

它匹配不包含从azAZ范围内的任何字符的任何字符串

10

PP

它匹配任何包含p的字符串,后跟任何字符,然后再跟另一个p

11

^.{2}$

它匹配任何包含两个字符的字符串

12

<b>(.*)</b>

它匹配 <b> 和 </b> 中包含的任何字符串

13

功率(马力)*

它匹配任何包含p后跟零个或多个序列hp实例的字符串

文字字符

先生编号 特征及描述
1

字母数字

本身

2

\0

NULL 字符 (\u0000)

3

\t

制表符 (\u0009)

4

\n

换行符 (\u000A)

5

\v

垂直制表符 (\u000B)

6

\F

换页 (\u000C)

7

\r

回车符 (\u000D)

8

\xnn

十六进制数nn指定的拉丁字符例如,\x0A 与\n相同

9

\uxxxx

由十六进制数字xxxx指定的 Unicode 字符;例如,\u0009 与\t相同

10

\cX

控制字符^X;例如,\cJ 相当于换行符 \n

元字符

字符只是一个字母字符,前面有一个反斜杠,其作用是赋予组合特殊的含义。

例如,您可以使用“\d”元字符搜索一大笔钱:/([\d]+)000/。这里,\d将搜索任何数字字符的字符串。

下表列出了可在 PERL 样式正则表达式中使用的一组元字符。

先生编号 特征及描述
1

单个字符

2

\s

空白字符(空格、制表符、换行符)

3

\S

非空白字符

4

\d

一个数字 (0-9)

5

\D

非数字

6

\w

单词字符(az、AZ、0-9、_)

7

\W

非单词字符

8

[\b]

文字退格键(特殊情况)

9

[艾欧]

匹配给定集合中的单个字符

10

[^aeiou]

匹配给定集合之外的单个字符

11

(富|酒吧|巴兹)

匹配任何指定的替代项

正则表达式属性

先生编号 属性及说明
1 RegExp.prototype.flags

包含 RegExp 对象标志的字符串

2 RegExp.prototype.global

是针对字符串中所有可能的匹配项测试正则表达式,还是仅针对第一个匹配项测试正则表达式

3 RegExp.prototype.ignoreCase

尝试在字符串中进行匹配时是否忽略大小写

4 RegExp.prototype.lastIndex

RegExp 对象是否具有读/写属性。

5 RegExp.prototype.multiline

是否跨多行搜索字符串

6 RegExp.prototype.source

图案的文字

正则表达式方法

先生编号 方法及说明
1 RegExp.prototype.exec()

在其字符串参数中执行匹配搜索

2 RegExp.prototype.test()

测试其字符串参数是否匹配

3 RegExp.prototype.match()

对给定的字符串进行匹配并返回匹配结果

4 RegExp.prototype.replace()

用新的子字符串替换给定字符串中的匹配项

5 RegExp.prototype.search()

在给定字符串中搜索匹配项并返回在字符串中找到的模式的索引

6 RegExp.prototype.split()

通过将字符串分隔为子字符串,将给定字符串拆分为数组

7 RegExp.prototype.toString()

返回表示指定对象的字符串。重写Object.prototype.toString()方法