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 的更新版本")
}
}