js RegExp使用

JavaScript08

js RegExp使用,第1张

RegExp类型支持正则表达式,他的标记符号有以下几种

1.g 表述查找字符串的全局内容,而不是找到第一个就结束

2.i 表示不区分大小写

3.m 代表多行

4.y 表示粘附模式,表示只从lastIndex开始之后的字符串

示例如下

RegExp中所以的元字符串必须转义,用\进行转移,元字符串包括 ( [ { \ ^ $ |

普通字符串和RegExp创建的对象是一样的

RegExp实例方法

1 global 是否设置的全局标记

2 ignoreCase 是否设置了i标记

3 unicode 是否设置了 u标记

4 lastIndex: 整数,表示原字符串中下次搜素的开始位置,始终从0开始

5 muliline 是否设置了m标记

6 dotAll 是否设置了s标记

RegExp实例方法

RegExp的实例方法主要是exec()函数,该函数主要是配合捕获组使用,该方法只接收一个参数,即要应用模式的字符串,如果找到,则放回一个数组,如果没有找到则返回null,但包含两个额外的属性,index input。index是字符串匹配模式的其实位置,input是要查找的字符串

全局g的作用

如果设置了全局标记,每次调用exec()都会返回字符串的下一个匹配项,lastIndex也会发生变化

RegExp构造函数属性

函数属性可以进行简写

input 简写 &最后匹配文本

lastParen简写 ` input字符串出现在lastMathch前面文本

正则表达式对象

本对象包含正则表达式模式以及表明如何应用模式的标志。

语法 1

re = /pattern/[flags]

语法 2

re = new RegExp("pattern",["flags"])

参数

re

必选项。将要赋值为正则表达式模式的变量名。

Pattern

必选项。要使用的正则表达式模式。如果使用语法 1,用 "/" 字符分隔模式。如果用语法 2,用引号将模式引起来。

flags

可选项。如果使用语法 2 要用引号将 flag 引起来。标志可以组合使用,可用的有:

g (全文查找出现的所有 pattern)

i (忽略大小写)

m (多行查找)

说明

不要将正则表达式对象跟全局 RegExp 对象混淆。尽管听起来像是一回事,但它们是截然不同的。正则表达式对象的属性只包含一个正则表达式的信息,而全局 RegExp 对象的属性包含了不断更新的每一个匹配出现的信息。

正则表达式对象保存用于查找字符串中的字符组合时的模式。创建正则表达式对象后,或者它被传递给字符串方法,或者字符串被传递给一个正则表达式方法。有关最近进行查找的信息被保存在全局 RegExp 对象中。

当预先知道查找字符串时用语法 1。当查找字符串经常变动或不知道时用语法 2,比如由用户输入得到的字符串。

在使用前 pattern 参数被编译为内部格式。对语法 1 来说,pattern 在该脚本被装载时被编译。对语法 2 来说,pattern 在使用前,或调用 compile 方法时被编译。

-----------

exec 方法

用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。

rgExp.exec(str)

参数

rgExp

必选项。包含正则表达式模式和可用标志的正则表达式对象。

str

必选项。要在其中执行查找的 String 对象或字符串文字。

说明

如果 exec 方法没有找到匹配,则它返回 null。如果它找到匹配,则 exec 方法返回一个数组,并且更新全局 RegExp 对象的属性,以反映匹配结果。数组的0元素包含了完整的匹配,而第1到n元素中包含的是匹配中出现的任意一个子匹配。这相当于没有设置全局标志 (g) 的 match 方法。

如果为正则表达式设置了全局标志,exec 从以 lastIndex 的值指示的位置开始查找。如果没有设置全局标志,exec 忽略 lastIndex 的值,从字符串的起始位置开始搜索。

exec 方法返回的数组有三个属性,分别是 input、index 和 lastIndex。Input 属性包含了整个被查找的字符串。Index 属性中包含了整个被查找字符串中被匹配的子字符串的位置。LastIndex 属性中包含了匹配中最后一个字符的下一个位置。

示例

下面的例子举例说明了 exec 方法的用法:

function RegExpTest(){

var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())

if (ver >= 5.5){ // 测试 JScript 的版本。

var src = "The rain in Spain falls mainly in the plain."

var re = /\w+/g // 创建正则表达式模式。

var arr

while ((arr = re.exec(src)) != null)

document.write(arr.index + "-" + arr.lastIndex + "\t" + arr)

}

else{

alert("请使用 JScript 的更新版本")

}

}