正则表达式

您所在的位置:网站首页 前缀表达式是什么意思 正则表达式

正则表达式

#正则表达式| 来源: 网络整理| 查看: 265

正则表达式可以被用于 RegExp 的 exec 和 test (en-US) 方法以及 String 的 match (en-US)、replace、search (en-US) 和 split (en-US) 方法。这些方法在 JavaScript 手册中有详细的解释。

方法 描述 exec 一个在字符串中执行查找匹配的 RegExp 方法,它返回一个数组(未匹配到则返回 null)。 test 一个在字符串中测试是否匹配的 RegExp 方法,它返回 true 或 false。 match 一个在字符串中执行查找匹配的 String 方法,它返回一个数组,在未匹配到时会返回 null。 matchAll 一个在字符串中执行查找所有匹配的 String 方法,它返回一个迭代器(iterator)。 search 一个在字符串中测试匹配的 String 方法,它返回匹配到的位置索引,或者在失败时返回 -1。 replace 一个在字符串中执行查找匹配的 String 方法,并且使用替换字符串替换掉匹配到的子字符串。 split 一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的 String 方法。

当你想要知道在一个字符串中的一个匹配是否被找到,你可以使用 test 或 search 方法;想得到更多的信息(但是比较慢)则可以使用 exec 或 match 方法。如果你使用 exec 或 match 方法并且匹配成功了,那么这些方法将返回一个数组并且更新相关的正则表达式对象的属性和预定义的正则表达式对象(详见下)。如果匹配失败,那么 exec 方法返回 null(也就是 false)。

在接下来的例子中,脚本将使用 exec 方法在一个字符串中查找一个匹配。

js

var myRe = /d(b+)d/g; var myArray = myRe.exec("cdbbdbsbz");

如果你不需要访问正则表达式的属性,这个脚本通过另一个方法来创建 myArray:

js

var myArray = /d(b+)d/g.exec("cdbbdbsbz"); // 和 "cdbbdbsbz".match(/d(b+)d/g); 相似。 // 但是 "cdbbdbsbz".match(/d(b+)d/g) 输出数组 [ "dbbd" ], // 而 /d(b+)d/g.exec('cdbbdbsbz') 输出数组 [ "dbbd", "bb", index: 1, input: "cdbbdbsbz" ].

如果你想通过一个字符串构建正则表达式,那么这个脚本还有另一种方法:

js

var myRe = new RegExp("d(b+)d", "g"); var myArray = myRe.exec("cdbbdbsbz");

通过这些脚本,匹配成功后将返回一个数组并且更新正则表达式的属性,如下表所示。

正则表达式执行后的返回信息 对象 属性或索引 描述 在例子中对应的值 myArray 匹配到的字符串和所有被记住的子字符串。 ["dbbd", "bb"] index 在输入的字符串中匹配到的以 0 开始的索引值。 1 input 初始字符串。 "cdbbdbsbz" [0] 最近一个匹配到的字符串。 "dbbd" myRe lastIndex 开始下一个匹配的起始索引值。(这个属性只有在使用 g 参数时可用在 通过参数进行高级搜索 一节有详细的描述.) 5 source 模式字面文本。在正则表达式创建时更新,不执行。 "d(b+)d"

如这个例子中的第二种形式所示,你可以使用对象初始器创建一个正则表达式实例,但不分配给变量。如果你这样做,那么,每一次使用时都会创建一个新的正则表达式实例。因此,如果你不把正则表达式实例分配给一个变量,你以后将不能访问这个正则表达式实例的属性。例如,假如你有如下脚本:

js

var myRe = /d(b+)d/g; var myArray = myRe.exec("cdbbdbsbz"); console.log("The value of lastIndex is " + myRe.lastIndex);

这个脚本输出如下:

The value of lastIndex is 5

然而,如果你有如下脚本:

js

var myArray = /d(b+)d/g.exec("cdbbdbsbz"); console.log("The value of lastIndex is " + /d(b+)d/g.lastIndex);

它显示为:

The value of lastIndex is 0

当发生/d(b+)d/g 使用两个不同状态的正则表达式对象,lastIndex 属性会得到不同的值。如果你需要访问一个正则表达式的属性,则需要创建一个对象初始化生成器,你应该首先把它赋值给一个变量。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3