欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
正則表達式對象和RegExp對象

正則表達式對象和RegExp對象

正則表達式對象和RegExp對象

正則表達式對象保存用于查找字符串中的字符組合時(shí)的模式。創(chuàng )建正則表達式對象后,或者它被傳遞給字符串方法,或者字符串被傳遞給一個(gè)正則表達式方法。有關(guān)最近進(jìn)行查找的信息被保存在 RegExp 對象中。

創(chuàng )建正則表達式對象有兩種方法。如果預先知道要查找的字符串時(shí),用語(yǔ)法1:

var regularexpression = /pattern/[switch]

當查找字符串經(jīng)常變動(dòng)或不知道時(shí)用語(yǔ)法2:

    var regularexpression = new RegExp("pattern",["switch"])

pattern是要查找的字符串,在語(yǔ)法1中用斜杠括起來(lái),而在語(yǔ)法2中有引號。switch是開(kāi)關(guān),有三種選擇,"i" 表示忽略大小寫(xiě),"g" 表示全文查找出現的所有pattern,"gi" 表示兩者都要,即全文查找并忽略大小寫(xiě)。

執行查找

創(chuàng )建了正則表達式對象后,要執行查找用exec方法,語(yǔ)法:

    rgexp.exec(str)

rgexp是正則表達式對象,可以是變量名或文字。str是被查找的字符串。例如,

var s = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPp";
var r = new RegExp("g", "i"); 
var a = r.exec(s);
document.write(a);   //顯示G

因為忽略大小寫(xiě),執行搜索后第一個(gè)匹配的是G,所以變量a="G"。

exec方法查找的結果被放在一個(gè)數組中。如果 exec 方法沒(méi)有找到匹配,則它返回 null。如果它找到一個(gè)或多個(gè)匹配,則exec 方法返回一個(gè)數組,并且更新 RegExp 對象,來(lái)反映查找結果。在RegExp 對象的屬性 $1, ...$9 中保存最近的九個(gè)結果。無(wú)論何時(shí)產(chǎn)生一個(gè)成功的帶插入語(yǔ)的匹配,$1...$9 屬性的值都被修改,但是只有最近的九個(gè)可以被保存起來(lái)。

測試正則表達式模式

可以用test方法來(lái)測試正則表達式在被查字符串的中是否存在。語(yǔ)法

    rgexp.test(str)

語(yǔ)法與exec方法一樣。它返回一個(gè)Boolean值,如果存在就返回true,否則返回false。test 方法不修改RegExp對象中的信息。

RegExp對象和它的屬性

RegExp對象用于保存對正則表達式模式查找的信息,這些信息保持在它的屬性中。RegExp對象沒(méi)有方法。一般語(yǔ)法是

    RegExp.propertyname

propertyname 參數是RegExp對象的一個(gè)屬性。RegExp對象有下列屬性:

$1-$9 屬性       返回九個(gè)在模式匹配期間找到的、最近保存的部分。只讀。
RegExp.index  返回第一個(gè)成功匹配的字符串的開(kāi)始位置。
RegExp.lastIndex  返回字符位置,它是被查找字符串中最后一次成功匹配的開(kāi)始位置。
RegExp.input 
返回執行查找的字符串。只讀。

lastIndex 屬性是基于零的,也就是說(shuō),第一個(gè)字符的索引是零。不論何時(shí)產(chǎn)生一個(gè)成功匹配,它的值都被修改。lastIndex 屬性被RegExp 對象的exec 和test 方法,以及String 對象的match、replace、和 split 方法修改。

下面的規則應用于 lastIndex 的值:

  • 如果還沒(méi)有匹配,則 lastIndex 被設置為 -1.
  • 如果 lastIndex 比字符串的長(cháng)度大,則 test 和 exec 失敗,并且 lastIndex 被設置為 -1。
  • 如果 lastIndex 等于字符串的長(cháng)度,且模式與空字符串匹配,則正則表達式匹配。否則,匹配失敗并且 lastIndex 被重置為 -1。
  • 否則,lastIndex 被設置為緊接最近的匹配的下一個(gè)位置。

例程1 下面的代碼用來(lái)考察上述屬性的內容。

function RegexpDemo(reg, str){
var re = new RegExp(reg ,"gi"); 
var a = re.exec(str);
var BR = "<br>";
if (re.test(str))
document.write ("找到的第一個(gè)匹配的字符串是" +a + BR);
document.write ("第一個(gè)匹配位置是" +RegExp.index+ BR);
document.write ("最后一個(gè)匹配位置是" +RegExp.lastIndex+ BR);
document.write ("被查找的文本是:" +BR +RegExp.input+ BR);
document.write ("$1=" + RegExp.$1);
};
var str = "The built-in objects are special because they are built into ASP pages and do not need to be created before you can use them in scripts.";
var reg = "(OBJECT)";
document.write ("查找" + reg + "<br>");
RegexpDemo(reg, str+str);

運行例程

說(shuō)明 查找的字符串OBJECT加括號,$1有值。如果不加括號,$1是空串。什么道理? 我也不知道。


正則表達式對象的屬性

正則表達式對象有兩個(gè)屬性屬性。lastIndex屬性指定索引,下一個(gè)匹配從該索引處開(kāi)始。語(yǔ)法:

    rgexp.lastIndex [= index]

請參照RegExp對象的lastIndex屬性。

source屬性返回正則表達式模式的文本的復本,只讀。語(yǔ)法:

    rgexp.source

下面的例子說(shuō)明了source 屬性的用法:

function SourceDemo(re, s){var s1;// 測試字符串中是否存在正則表達式。if (re.test(s))s1 = " contains ";elses1 = " does not contain ";// 獲得正則表達式自己的文本。return(s + s1 + re.source);

RegExp.input  是返回被查找的字符串,而source是返回要查找的字符串。

正則表達式對象的compile方法

正則表達式模式pattern 參數在使用前被編譯為內部格式。對語(yǔ)法1 來(lái)說(shuō),pattern 在該腳本裝載時(shí)被編譯。對語(yǔ)法2 來(lái)說(shuō),pattern 在使用前,或調用compile方法時(shí)被編譯。compile方法把pattern轉換為內部格式,從而執行得更快。這使得在循環(huán)中可更有效地使用正則表達式。語(yǔ)法如下:

    rgexp.compile(pattern)

下面的例子說(shuō)明了compile 方法的用法:

function CompileDemo(){var s = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPp"http:// 只為大寫(xiě)字母創(chuàng  )建正則表達式。var r = new RegExp("[A-Z]", "g");var a = s.match(r)	// 查找匹配。  document.write(a);r.compile("[a-z]", "g");// 只為小寫(xiě)字母編譯正則表達式。var a = s.match(r)	// 查找匹配。document.write(a);}

代碼注釋

match是String對象的一個(gè)方法,其功能是使用正則表達式對象對字符串進(jìn)行查找,并將結果作為數組返回。語(yǔ)法:

stringObj.match(rgExp)
match 方法與RegExp.exec 方法有些相似,將返回一個(gè)數組。該數組的元素0 包含最后匹配的字符,元素 1...n 包含與正則表達式中任何用插入符分開(kāi)的子字符串匹配的內容。該方法將更新RegExp 對象的內容。

下面的示例演示了match方法的用法:

function MatchDemo(){var r, re;var s = "The quick brown fox jumped over the lazy yellow dog.";re = /fox/i;r = s.match(re);return(r);}

VBscript中的正則表達式

在VBscript中,正則表達式對象就是RegExp對象。RegExp對象有3個(gè)屬性:

  • Pattern 屬性,設置或返回被搜索的正則表達式模式。
  • Global  屬性,指明在整個(gè)搜索字符串時(shí)模式是全部匹配還是只匹配第一個(gè)。
  • IgnoreCase 屬性,指明模式搜索是否區分大小寫(xiě)。

RegExp對象有3種方法:

  • object.Execute(string對指定的字符串執行正則表達式搜索。Execute方法返回一個(gè) Matches 集合,其中包含了在string 中找到的每一個(gè)匹配的 Match 對象。如果未找到匹配,Execute 將返回空的 Matches 集合。
  • object.Test(string對指定的字符串執行一次測試性搜索,只返回一個(gè) Boolean值指示是否存在匹配。
  • object.Replace(string1, string2替換在正則表達式中找到的文本。搜索string1,用string2替換。返回string1被替換后的字符串。

這里object是已定義的正則表達式,string是被搜索的文本。要查找的是用Pattern描述的正則表達式模式。

例程1 創(chuàng )建一個(gè)正則表達式,并演示替換方法。

Function ReplaceTest(patrn, replStr)Dim regEx, str1str1 = "The quick brown fox jumped over the lazy dog."Set regEx = New RegExpregEx.Pattern = patrnregEx.IgnoreCase = TrueReplaceTest = regEx.Replace(str1, replStr)End FunctionMsgBox(ReplaceTest("fox", "cat"))
這個(gè)例程請讀者自己拷貝下來(lái)運行。

Match對象和Matches集合

只能通過(guò) RegExp 對象的Execute 方法來(lái)創(chuàng )建,該方法實(shí)際上返回了Match 對象的集合Matches。所有的Match 對象屬性都是只讀的。每個(gè)Match 對象提供了被正則表達式搜索找到的匹配字符串的開(kāi)始位置、長(cháng)度,字符串本身等信息,通過(guò)Match對象的屬性供用戶(hù)訪(fǎng)問(wèn)。

  • FirstIndex  在搜索字符串中匹配的位置。
  • Length 匹配字符串的長(cháng)度。
  • Value  找到的匹配字符串。

例程2 創(chuàng )建一個(gè)正則表達式,執行搜索,并顯示每一個(gè)匹配的結果。

Function RegExpTest(patrn, strng)
  Dim regEx, Match, Matches
  Set regEx = New RegExp
  regEx.Pattern = patrn
  regEx.IgnoreCase = True
  regEx.Global = True
  Set Matches = regEx.Execute(strng)
  For Each Match in Matches
    RetStr = RetStr & "Match " & Match & " found at position "
    RetStr = RetStr & Match.FirstIndex & ". Match Value is "
    RetStr = RetStr & Match.Value & "'." & "<br>"
  Next
  RegExpTest = RetStr
End Function
document.write (RegExpTest("is.", "IS1 is2 IS3 is4"))

運行例程2  

兩種語(yǔ)言正則表達式的用法對照表

VBscript的RegExp對象Javascript的正則表達式
IgnoreCase屬性創(chuàng )建語(yǔ)法中的開(kāi)關(guān)switch ="i"
Global屬性創(chuàng )建語(yǔ)法中的開(kāi)關(guān)switch ="g"
Pattern屬性創(chuàng )建語(yǔ)法中的Pattern參數
matchs對象集合屬性$1 - $9
Execute方法exec方法
Test方法test方法
Replace方法沒(méi)有對應方法,但有字符串對象的replace方法
沒(méi)有對應的方法compile方法
沒(méi)有對應的屬性source屬性

有許多用于正則表達式模式的特殊字符,這在兩種語(yǔ)言中是一樣的。詳情見(jiàn)相關(guān)文章。

文 東方一峰 2002-12-27

http://www.shps.cn/developweb/webSchool/VBJAVA/VBJjc016.htm

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
正則表達式大全
RegExp對象
正則表達式學(xué)習
JScript中正則表達函數的說(shuō)明與應用
javascript正則表達式test的奇怪問(wèn)題
精通 JavaScript中的正則表達式 - JavaScript
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久