0
点赞
收藏
分享

微信扫一扫

2023年山东省高职组区块链技术竞赛任务书

J简文 2023-12-28 阅读 9

RegExp 类型支持正则表达式。正则表达式使用类似 Perl 的简洁语法来创建:

这个正则表达式的 pattern (模式)可以是任何简单或复杂的正则表达式,包括字符类、限定符、

分组、向前查找和反向引用。每个正则表达式可以带零个或多个 flags(标记),用于控制正则表达式的行为。下面给出了表示匹配模式的标记。

使用不同模式和标记可以创建出各种正则表达式,比如:

// 匹配字符串中的所有 "at"

// 匹配第一个 "bat" "cat" ,忽略大小写

// 匹配所有以 "at" 结尾的三字符组合,忽略大小写

与其他语言中的正则表达式类似,所有 元字符 在模式中也必须转义,包括: 108 5 章 基本引用类型

元字符在正则表达式中都有一种或多种特殊功能,所以要匹配上面这些字符本身,就必须使用反斜

杠来转义。下面是几个例子:

这里的 pattern1 匹配 "bat" "cat" ,不区分大小写。要直接匹配 "[bc]at" ,左右中括号都必

须像 pattern2 中那样使用反斜杠转义。在 pattern3 中,点号表示 "at" 前面的任意字符都可以匹配。

如果想匹配 ".at" ,那么要像 pattern4 中那样对点号进行转义。

前面例子中的正则表达式都是使用字面量形式定义的。正则表达式也可以使用 RegExp 构造函数来

创建,它接收两个参数:模式字符串和(可选的)标记字符串。任何使用字面量定义的正则表达式也可

以通过构造函数来创建,比如:

这里的 pattern1 pattern2 是等效的正则表达式。注意, RegExp 构造函数的两个参数都是字

符串。因为 RegExp 的模式参数是字符串,所以在某些情况下需要二次转义。所有元字符都必须二次转 义,包括转义字符序列,如 \n \ 转义后的字符串是 \\ ,在正则表达式字符串中则要写成 \\\\)。下表 展示了几个正则表达式的字面量形式,以及使用 RegExp 构造函数创建时对应的模式字符串。

此外,使用 RegExp 也可以基于已有的正则表达式实例,并可选择性地修改它们的标记:

RegExp 实例属性

每个 RegExp 实例都有下列属性,提供有关模式的各方面信息。

通过这些属性可以全面了解正则表达式的信息,不过实际开发中用得并不多,因为模式声明中包含

这些信息。下面是一个例子:

注意,虽然第一个模式是通过字面量创建的,第二个模式是通过 RegExp 构造函数创建的,但两个

模式的 source flags 属性是相同的。 source flags 属性返回的是规范化之后可以在字面量中

使用的形式。

RegExp 构造函数属性

RegExp 构造函数本身也有几个属性。(在其他语言中,这种属性被称为静态属性。)这些属性适用

于作用域中的所有正则表达式,而且会根据最后执行的正则表达式操作而变化。这些属性还有一个特点, 112 5 章 基本引用类型

就是可以通过两种不同的方式访问它们。换句话说,每个属性都有一个全名和一个简写。下表列出了

RegExp 构造函数的属性

通过这些属性可以提取出与 exec()test()执行的操作相关的信息。来看下面的例子:

以上代码创建了一个模式,用于搜索任何后跟 "hort" 的字符,并把第一个字符放在了捕获组中。

不同属性包含的内容如下。

input 属性中包含原始的字符串。

leftConext 属性包含原始字符串中 "short" 之前的内容, rightContext 属性包含 "short"

之后的内容。

lastMatch 属性包含匹配整个正则表达式的上一个字符串,即 "short"

lastParen 属性包含捕获组的上一次匹配,即 "s"

这些属性名也可以替换成简写形式,只不过要使用中括号语法来访问,如下面的例子所示,因为大

多数简写形式都不是合法的 ECMAScript 标识符:

RegExp 还有其他几个构造函数属性,可以存储最多 9 个捕获组的匹配项。这些属性通过 RegExp.

$1 ~ RegExp.$9 来访问,分别包含第 1~9 个捕获组的匹配项。在调用 exec() test() 时,这些属属 就会被填充,然后就可以像下面这样使用它们:

        在这个例子中,模式包含两个捕获组。调用 test() 搜索字符串之后,因为找到了匹配项所以返回

true ,而且可以打印出通过 RegExp 构造函数的 $1 $2 属性取得的两个捕获组匹配的内容。

举报

相关推荐

0 条评论