学习笔记之四:JavaScript正则表达式

2009年5月3日星期日

学习笔记之四:JavaScript正则表达式

一、什么是RegExp?
RegExp是正则表达式的缩写。是JavaScript中正则表达式对象,当您检索某个文本时,可以使用一种模式来描述要检索的内容。RegExp就是这种模式。
二、如何定义RegExp?
RegExp包含正则表达式模式以及表明如何应用模式的标志。
语法1re=/pattern/[flags]
语法2re=newRegExp(pattern,[flags])
参数:re必选项。将要赋值为正则表达式模式的变量名。Pattern必选项。要使用的正则表达式模式。如果使用语法1,用/字符分隔模式。如果用语法2,用引号将模式引起来。Flags可选项。如果使用语法2要用引号将flag引起来。标志可以组合使用,可用的有:
g(全文查找出现的所有pattern)
i(忽略大小写)
m(多行查找)
三、正则表达式对象方法
1、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方法的用法:
[code]
functionRegExpTest()
{
varver=Number(ScriptEngineMajorVersion()+.+ScriptEngineMinorVersion())
if(ver=5.5){//测试JScript的版本。
varsrc=TheraininSpainfallsmainlyintheplain.;
varre=/\w+/g;//创建正则表达式模式。
vararr;
while((arr=re.exec(src))!=null)
document.write(arr.index+-+arr.lastIndex+arr+\t);
}
else{
alert(请使用JScript的更新版本);
}
}
[/code]
返回值:0-3The4-8rain9-11in12-17Spain18-23falls24-30mainly31-33in34-37the38-43plain
2、test方法
返回一个Boolean值,它指出在被查找的字符串中是否存在模式。
rgexp.test(str)
参数\\rgexp必选项。包含正则表达式模式或可用标志的正则表达式对象。
str必选项。要在其上测试查找的字符串。
说明
test方法检查在字符串中是否存在一个模式,如果存在则返回true,否则就返回false。
全局RegExp对象的属性不由test方法来修改。
示例
下面的例子举例说明了test方法的用法:
[code]
functionTestDemo(re,s)
{
vars1;//声明变量。
//检查字符串是否存在正则表达式。
if(re.test(s))//测试是否存在。
s1=contains;/包含模式。
else
s1=doesnotcontain;//s不包含模式。
return('+s+'+s1+'+re.source+');//返回字符串。/s
}
[/code]
函数调用:document.write(TestDemo(/ain+/,TheraininSpainfallsmainlyintheplain.));

返回值:'TheraininSpainfallsmainlyintheplain.'contains'ain+'

0 评论:

发表评论