ES6 - 正则表达式



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

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

正则表达式可以定义为 -

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

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

序号 属性及描述
1

G

全局匹配

2

I

忽略大小写

3

M

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

4

U

Unicode;将模式视为 Unicode 代码点的序列

5

Y

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

构造正则表达式

方括号

方括号([])在正则表达式的上下文中具有特殊含义。它们用于查找字符范围。

序号 表达式及描述
1

[...]

方括号之间的任何一个字符

2

[^...]

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

3

[0-9]

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

4

[a-z]

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

5

[A-Z]

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

6

[a-Z]

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

上面显示的范围是一般的;您还可以使用范围 [0-3] 来匹配从 0 到 3 的任何十进制数字,或使用范围 [b-v] 来匹配从 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]

它匹配不包含从 az 和从 AZ 的任何字符的任何字符串

10

p.p

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

11

^.{2}$

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

12

<b>(.*)</b>

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

13

p(hp)*

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

字面量字符

序号 字符及描述
1

字母数字

自身

2

\0

空字符 (\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

单词字符(a-z、A-Z、0-9、_)

7

\W

非单词字符

8

[\b]

字面量退格符(特殊情况)

9

[aeiou]

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

10

[^aeiou]

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

11

(foo|bar|baz)

匹配指定的任何备选方案

RegExp 属性

序号 属性及描述
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

模式的文本

RegExp 方法

序号 方法及描述
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() 方法

广告