正则表达式详述 四
正则表达式详述 四
发布时间:2016-12-29 来源:查字典编辑
摘要:以下这些不是正则表达式的新增对象请参阅对应的Javascript对象的属性$_属性参考input$*属性参考multiline$&属性参考l...

以下这些不是正则表达式的新增对象请参阅对应的Javascript对象的属性

$_属性参考input

$*属性参考multiline

$&属性参考lastMatch

$+属性参考lastParen

$`属性参考leftContext

$'属性参考rightContextcompile方法

在脚本运行期间编译正则表达式对象属于RegExp的方法

在Javascript1.2,NES3.0以上版本提供

语法:

regexp.compile(pattern[,flags])以数:

regexp正则表达式的名称,可以是变量名或文字串。

pattern正则表达式的定义文本。

flags如果指定的话,可以是下面其中的一个:

"g":匹配所有可能的字串;"i":忽略大小写;"gi":匹配所有可能的字串及忽略大小写描述:

使用compile方法来编译一个正则表达式createdwiththeRegExpconstructorfunction。这样就强制正则表达式只编译一次,而不是每次遇到正则表达式的时候都编译一次。当你确认正则表达式能保持不变的时候可使用compile方法来编译它(在获得它的匹配模式后),这样就可以在脚本中重复多次使用它。

你亦可以使用compile方法来改变在运行期间改变正则表达式。例如,假如正则表达式发生变化,你可以使用compile方法来重新编译该对象来提高使用效率。使用该方法将改变正则表达式的source,global和ignoreCasesource属性的值。constructor指出建立对象原型的function。注意这个属性的值由函数本身提供,而不是一个字串包含RegExp的name.Property提供。

在Javascript1.1,NES2.0以上版本提供ECMA版本ECMA-262

描述:

参考Object.constructor.exec方法在指定的字符串运行匹配搜索。返回一个结果数组。

是RegExp的方法

在Javascript1.2,NES3.0以上版本提供

语法:regexp.exec([str])regexp([str])

参数:regexp,正则表达式的名称,可以是一个变量名或文字定义串。

str,要匹配正则表达式的字符串,如果省略,将使用RegExp.input的值。

描述:就如在语法描述中的一样,正则表达工的exec方法能够被直接调用(使用regexp.exec(str))或者间接调用(使用regexp(str))。

假如你只是运行以找出是否匹配,可以使用String搜索方法。

假如匹配成功,exec方法返回一个数组并且更新正则表达式对象属性的值和预先定义的正则表达式对象、RegExp。如果匹配失败,exec方法返回null。

请看下例:

<scriptLANGUAGE="Javascript1.2">//匹配一个b接着一个或多个d,再接着一个b

//忽略大小写myRe=/d(b+)(d)/ig;myArray=myRe.exec("cdbBdbsbz");

</script>下面是该脚本的返回值:对象属性/Index描述例子

myArray

myArray的内容["dbBd","bB","d"]

index

基于0的匹配index1

input

原始字符串cdbBdbsbz

[0]

最后匹配的字符dbBd

[1],...[n]

用圆括号括住的匹配字符串,如果有的话。不限制括号的个数。[1]=bB

[2]=d

myRe

lastIndex

开始下次匹配操作的index值5

ignoreCase

指出"i"是否使用以忽略大小写true

global

指出是否使用"g"标记来进行匹配所有可能的字串true

source

定义模式的文本字符串d(b+)(d)

RegExp

lastMatch$&

最后匹配的字符dbBd

leftContext$Q

最新匹配前面的子串c

rightContext$'

最新匹配后面的子串bsbz

$1,...$9

圆括号内的匹配子串,如果有的话。圆括号的个数不受限制,但RegExp只能保留最后9个$1=bB

$2=d

lastParen$+

最后一个加上圆括号的匹配子串,如果有的话d

假如你的正则表达式使用了"g"标记,你可以多次使用exec方法来连续匹配相同的串。当你这样做

的时候,新的匹配将从由正则表达式的lastIndex属性值确定的子串中开始。

例如,假定你使用下面的脚本:

<scriptLANGUAGE="Javascript1.2">

myRe=/ab*/g;str="abbcdefabh"

myArray=myRe.exec(str);

document.writeln("Found"+myArray[0]+".Nextmatchstartsat"+myRe.lastIndex)

mySecondArray=myRe.exec(str);

document.writeln("Found"+mySecondArray[0]+".Nextmatchstartsat"+myRe.lastIndex)

</script>

这个脚本显示如下结果:

Foundabb.Nextmatchstartsat3

Foundab.Nextmatchstartsat9

例子:

在下面的例子中,用户输入一个名字,脚本根据输入执行匹配操作。接着检查数组看是否和其它用户的名字匹配。

本脚本假定已注册的用户的姓已经存进了数组A中,或许从一个数据库中取得。

<HTML>

<scriptLANGUAGE="Javascript1.2">A=["zhao","qian","sun","li","liang"]

functionlookup(){firstName=/w+/i();if(!firstName)

window.alert(RegExp.input+"非法输入");else{count=0;

for(i=0;i输入你的姓然后按回车键。

<FORM><INPUTTYPE:"TEXT"NAME="FirstName"onChange="lookup(this);">

</FORM>

</HTML>

global属性

正则表达式中是否使用了"g"标记。

RegExp属性,只读

在Javascript1.2,NES3.0以上版本提供

描述:global是一个个别正则表达式对象的属性

如果使用了"g"标记,global的值为true;否则为false。"g"标记指定正则表达式测试所有可能的匹配。

你不能直接改变该属性的值,但可以调用compile方法来改变它。ignoreCase检查正则表达式是否使用了"i"标记

RegExp属性,只读在Javascript1.2,NES3.0以上版本提供

描述:

ignoreCase是个别正则表达式对象的一个属性。

如果使用了"i"标记,则返回true,否则返回false。"i"标记指示在进行匹配的时候忽略大小写。

你不能直接改变该属性的值,但可以通过调用compile方法来改变它input指出正则表达式要测试那个字串。$_是这个属性的另一个名字。

RegExp的属性,静态在Javascript1.2,NES3.0以上版本提供

描述:因为input是静态的,不是某个个别的正则表达式对象的属性。你也可以使用RegExp.input来表示。

如果没有给正则表达式的exec或test方法提供字符串,并且RegExp.input中有值,则使用它的值来调用该方法。

脚本或浏览器能够预置input属性。如果被预置了值且调用exec或test方法的时候没有提供字符串

则调用exec或test的时候使用input的值。input可以被浏览器以下面的方式设置:

当text表单域处理句柄被调用的时候,input被设置为该text输入的字串。

当textarea表单域处理句柄被调用的时候,input被设置为textarea域内输入的字串。注意multili

ne亦被设置成true从而能匹配多行文本。当select表单域处理句柄被调用的时候,input被设置成selectedtext的值。

当链接对象的处理句柄被调用的时候,input被设置成<AHREF=...>和</A>之间的字符串。

事件理现句柄处理完毕后,input属性的值被清除。lastIndex可读/可写的一个整数属性,指出下一次匹配从哪里开始。

RegExp的属性在Javascript1.2,NES3.0以上版本提供

描述:lastIndex是个别的正则表达式对象的属性。这个属性只有当正则表达式的"g"标记被使用以进行全串匹配的时候才被设置。实行以下规则:

如果lastIndex大小字符串的长度,regexp.test和regexp.exec失败,且lastIndex被设为0。

如果lastIndex等于字串的长度且正则表达式匹配空字符串,则正则表达式从lastIndex的位置开始匹配。

如果lastIndex等于字符串的长度且正则表达式不匹配空字符串,则正则表达式不匹配input,且lastIndex被置为0。

否则,lastIndex被设置成最近一次匹配的下一点。例如,按下面的顺序执行脚本:re=/(hi)?/g匹配空字符串

re("hi")返回["hi","hi"],lastIndex置为2

re("hi")返回[""],一个空数组,它的下标为0的元素就是匹配字符串。在这种情况下,返回空

串是因为lastIndex等于2(且仍然是2),并且"hi"的长度也是2。lastMatch最后一次匹配字符串,$&是同样的意思。

RegExp的属性,静态,只读在Javascript1.2,NES3.0以上版本提供

描述:因为lastMatch是静态的,所以它不是个别指定正则表达式的属性。你也可以使用RegExp.lastMatch。lastParen

最后一次加上括号的匹配字符串,如果有的话。$+是同样的意思。

RegExp属性,静态,只读

在Javascript1.2,NES3.0以上版本提供

描述:因为lastParen是静态的,它不是某个个别正则式的属性,你可以使用RegExp.lastParen表达同样的意思。

leftContext最近一次匹配前面的子串,$`具有相同的意思。

RegExp的属性,静态,只读

在Javascript1.2,NES3.0以上版本提供

描述:因为leftContext是静态的,不是某一个正则表达式的属性,所以可以使用RegExp.leftContext来表达想同的意思。

multiline反映是否匹配多行文本,$*是相同的意思。

RegExp的属性,静态

在Javascript1.2,NES3.0以上版本提供

描述:因为multiline是静态的,而不是某个个别正则表达式的属性,所以能够用RegExp.multiline表达相同的意思。

如果允许匹配多行文本,则multiline为true,如果搜索必须在换行时停止,则为false。

脚本或浏览器能够设置multiline属性。当一个textarea的事件处理句柄被调用的时候,multiline

被置为true。在事件处理句柄处理完毕后,multiline属性值被清除。也就是说,如果你设置了multili

ne为true,则执行任何的事件处理句柄后,multiline被置为false。

prototype

描绘类的原型。你可以根据要求使用prototype来增加类的属性或方法。为了获得prototypes的资

料,请参阅RegExp的function.prototype.Property属性。从Javascript1.1,NES2.0版本开始提供

ECMA版本ECMA-262rightContext最后一次匹配的右边的字符串,$'是同样的效果。

RegExp的属性,静态,只读从Javascript1.2,NES3.0以上版本开始提供

描述:因为rightContext是静态的,不是某个个别正则表达工的属性,可以使用RegExp.rightContext来达到相同的效果。

source一个只读属性,包含正则表达式定义的模式,不包侨forwardslashes和"g"或"i"标记。

RegExp的属性,只读

从Javascript1.2,NES3.0以上版本开始提供

描述:source是个别正则表达式对象的属性,你不能直接改变它的值,但可以通过调用compile方法来改变它。test

执行指定字符串的正则表达式匹配搜索,返回true或false。RegExp的方法

从Javascript1.2,NES3.0以上版本开始提供语法:regexp.test([str])

参数:regexp,正则表达式的名称,可以是变量名或正则表达式定义文字串

str,要匹配的字符串,如果省略,将使用RegExp.input的值为作参数

描述:当你需要知道一个字符串能否匹配某个正则表达工,可以使用test方法(与String.search方

法类似);为了获得更多的信息(但速度将变慢),可以使用exec方法(与String.match方法类似)。

例子:下面的例子显示test是否成功的提示:

functiontestinput(re,str){

if(re.test(str))midstring="contains";

elsemidstring="doesnotcontain";

document.write(str+midstring+re.source);}toSource

返回一个字符串象征对象的源码RegExp的方法从Javascript1.3以上版本开始提供语法:toSource()

参数:没有描述:toSource方法返回下述的值:对于内置的RegExp对象,toSource返回下面的字符象征源码不可用:

functionBoolean(){[nativecode]}

在RegExp场合中,toSource返回象征源码的字符串,通常这个方法是由Javascript内部自动调用而不是不代码中显式调用。

更多请看Object.toSourcetoString返回描绘指定对象的字符串。

RegExp的方法

从Javascript1.1,NES2.0开始提供ECMA版本ECMA-262语法:toString()参数:无

描述:RegExp对象不考虑Object对象的toString方法;它不继承Object.toString,对于RegExp对

象,toString方法返回一个代表该对象的字符串。例如:下面的例子显示象征RegExp对象的字符串

myExp=newRegExp("a+b+c");alert(myExp.toString())

displays"/a+b+c/"更多请看:Object.toStringvalueOf返回一个RegExp对象的原始值

RegExp的方法从Javascript1.1版本开始提供ECMA版本:ECMA-262语法:valueOf()

参数:无描述:RegExp的valueOf方法以字符串形式返回RegExp对象的原始值,这个值与RegExp.toString相等。

该方法通常由Javascript内部自动调用而不是显式调用例子:myExp=newRegExp("a+b+c");

alert(myExp.valueOf())displays"/a+b+c/"

源:u/meil/archives/2007/325.html

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新正则表达式学习
热门正则表达式学习
编程开发子分类