主頁 > 知識庫 > 正則表達式詳述 四

正則表達式詳述 四

熱門標簽:電子圍欄 服務器配置 阿里云 銀行業(yè)務 團購網(wǎng)站 科大訊飛語音識別系統(tǒng) Linux服務器 Mysql連接數(shù)設置
以下這些不是正則表達式的新增對象請參閱對應的Javascript對象的屬性
$_屬性 參考input 
$*屬性 參考multiline 
$屬性 參考lastMatch 
$+屬性 參考lastParen 
$`屬性 參考leftContext 
$'屬性 參考rightContext compile方法 


在腳本運行期間編譯正則表達式對象屬于RegExp的方法 


在Javascript 1.2, NES 3.0以上版本提供 


語法: 
     regexp.compile(pattern[, flags]) 以數(shù):
     regexp 正則表達式的名稱,可以是變量名或文字串。  
     pattern 正則表達式的定義文本。
    flags 如果指定的話,可以是下面其中的一個:
        "g": 匹配所有可能的字串 ; "i": 忽略大小寫 ; "gi": 匹配所有可能的字串及忽略大小寫 描述: 
        使用compile方法來編譯一個正則表達式 created with the RegExp constructor function。這樣就強制正則表達式只編譯一次,而不是每次遇到正則表達式的時候都編譯一次。當你確認正則表達式能保持不變的時候可使用compile 方法來編譯它(在獲得它的匹配模式后),這樣就可以在腳本中重復多次使用它。 
        你亦可以使用compile 方法來改變在運行期間改變正則表達式。例如,假如正則表達式發(fā)生變化, 你可以使用compile方法來重新編譯該對象來提高使用效率。使用該方法將改變正則表達式的source, global和ignoreCasesource屬性的值。 constructor指出建立對象原型的function。注意這個屬性的值由函數(shù)本身提供,而不是一個字串包含RegExp的name.Property提供。  

在Javascript 1.1, NES 2.0以上版本提供 ECMA版本ECMA-262 
描述:
        參考Object.constructor.exec方法 在指定的字符串運行匹配搜索。返回一個結(jié)果數(shù)組。 


是RegExp的方法  
在Javascript 1.2, NES 3.0以上版本提供 


語法: regexp.exec([str])regexp([str]) 
參數(shù): regexp,正則表達式的名稱,可以是一個變量名或文字定義串。  
str,要匹配正則表達式的字符串,如果省略,將使用RegExp.input的值。 

描述:就如在語法描述中的一樣,正則表達工的exec方法能夠被直接調(diào)用(使用regexp.exec(str))或者間接調(diào)用(使用regexp(str))。 
假如你只是運行以找出是否匹配,可以使用String搜索方法。 
假如匹配成功,exec方法返回一個數(shù)組并且更新正則表達式對象屬性的值和預先定義的正則表達式對象、RegExp。如果匹配失敗,exec方法返回null。 
請看下例:


 script LANGUAGE="Javascript1.2"> //匹配一個b接著一個或多個d,再接著一個b 
//忽略大小寫 myRe=/d(b+)(d)/ig; myArray = myRe.exec("cdbBdbsbz"); 
/script> 下面是該腳本的返回值:對象 屬性/Index 描述 例子  
myArray 
myArray的內(nèi)容 ["dbBd", "bB", "d"]  
index 
基于0的匹配index 1  
input 
原始字符串 cdbBdbsbz  
[0] 
最后匹配的字符 dbBd  
[1], ...[n] 
用圓括號括住的匹配字符串,如果有的話。不限制括號的個數(shù)。 [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 
圓括號內(nèi)的匹配子串,如果有的話。圓括號的個數(shù)不受限制,但RegExp只能保留最后9個 $1 = bB  
$2 = d  
lastParen $+ 
最后一個加上圓括號的匹配子串,如果有的話 d  

假如你的正則表達式使用了"g"標記,你可以多次使用exec 方法來連續(xù)匹配相同的串。當你這樣做 
的時候,新的匹配將從由正則表達式的lastIndex 屬性值確定的子串中開始。
例如,假定你使用下面的腳本: 

script LANGUAGE="Javascript1.2"> 
myRe=/ab*/g;str = "abbcdefabh" 
myArray = myRe.exec(str); 
document.writeln("Found "+myArray[0]+". Next match starts at "+myRe.lastIndex) 
mySecondArray = myRe.exec(str); 
document.writeln("Found "+mySecondArray[0]+". Next match starts at "+myRe.lastIndex) 
/script> 


這個腳本顯示如下結(jié)果: 
Found abb. Next match starts at 3 
Found ab. Next match starts at 9 


例子: 
在下面的例子中,用戶輸入一個名字,腳本根據(jù)輸入執(zhí)行匹配操作。接著檢查數(shù)組看是否和其它用戶的名字匹配。 
本腳本假定已注冊的用戶的姓已經(jīng)存進了數(shù)組A中,或許從一個數(shù)據(jù)庫中取得。 
HTML> 
script LANGUAGE="Javascript1.2"> A = ["zhao","qian","sun","li","liang"] 
function lookup() { firstName = /\w+/i(); if (!firstName) 
window.alert (RegExp.input + "非法輸入"); else { count=0; 
for (i=0;i 輸入你的姓然后按回車鍵。 
FORM>INPUT TYPE:"TEXT" NAME="FirstName" onChange="lookup(this);">
/FORM> 
/HTML> 


global屬性
 正則表達式中是否使用了"g"標記。
 RegExp屬性,只讀 
在Javascript 1.2, NES 3.0以上版本提供
 描述: global是一個個別正則表達式對象的屬性 
如果使用了"g"標記,global的值為true;否則為 false。"g"標記指定正則表達式測試所有可能的匹配。 
你不能直接改變該屬性的值,但可以調(diào)用compile方法來改變它。 ignoreCase 檢查正則表達式是否使用了"i"標記 

RegExp屬性,只讀 在Javascript 1.2, NES 3.0以上版本提供 
描述: 
ignoreCase是個別正則表達式對象的一個屬性。 
如果使用了"i"標記,則返回true,否則返回false。"i"標記指示在進行匹配的時候忽略大小寫。 
你不能直接改變該屬性的值,但可以通過調(diào)用compile方法來改變它 input 指出正則表達式要測試那個字串。$_是這個屬性的另一個名字。 

RegExp的屬性,靜態(tài) 在Javascript 1.2, NES 3.0以上版本提供  
描述:因為input是靜態(tài)的,不是某個個別的正則表達式對象的屬性。你也可以使用 RegExp.input來表示。 
如果沒有給正則表達式的exec或test方法提供字符串,并且RegExp.input中有值,則使用它的值來調(diào)用該方法。 
腳本或瀏覽器能夠預置input屬性。如果被預置了值且調(diào)用exec或 test方法的時候沒有提供字符串 
則調(diào)用exec或test的時候使用input的值。input可以被瀏覽器以下面的方式設置: 
當text表單域處理句柄被調(diào)用的時候,input被設置為該text輸入的字串。 
當textarea表單域處理句柄被調(diào)用的時候,input被設置為textarea域內(nèi)輸入的字串。注意multili 
ne亦被設置成true從而能匹配多行文本。 當select表單域處理句柄被調(diào)用的時候,input被設置成selected text的值。 
當鏈接對象的處理句柄被調(diào)用的時候,input被設置成A HREF=...>和/A>之間的字符串。 
事件理現(xiàn)句柄處理完畢后,input屬性的值被清除。 lastIndex 可讀/可寫的一個整數(shù)屬性,指出下一次匹配從哪里開始。 

RegExp的屬性 在Javascript 1.2, NES 3.0以上版本提供  
描述:lastIndex 是個別的正則表達式對象的屬性。 這個屬性只有當正則表達式的"g"標記被使用以進行全串匹配的時候才被設置。實行以下規(guī)則: 
如果lastIndex大小字符串的長度,regexp.test和regexp.exec失敗,且lastIndex被設為0。 
如果lastIndex等于字串的長度且正則表達式匹配空字符串,則正則表達式從lastIndex的位置開始匹配。 
如果lastIndex等于字符串的長度且正則表達式不匹配空字符串,則正則表達式不匹配input,且lastIndex被置為0。 
否則,lastIndex被設置成最近一次匹配的下一點。 例如,按下面的順序執(zhí)行腳本: re = /(hi)?/g 匹配空字符串  
re("hi") 返回["hi", "hi"],lastIndex置為2  
re("hi") 返回[""],一個空數(shù)組,它的下標為0的元素就是匹配字符串。在這種情況下,返回空 
串是因為lastIndex等于2(且仍然是2),并且"hi"的長度也是2。 lastMatch 最后一次匹配字符串,$是同樣的意思。 

RegExp的屬性,靜態(tài),只讀 在Javascript 1.2, NES 3.0以上版本提供  
描述:因為lastMatch是靜態(tài)的,所以它不是個別指定正則表達式的屬性。你也可以使用RegExp.lastMatch。 lastParen 
最后一次加上括號的匹配字符串,如果有的話。$+是同樣的意思。 


RegExp屬性,靜態(tài),只讀 
在Javascript 1.2, NES 3.0以上版本提供  
描述:因為lastParen是靜態(tài)的,它不是某個個別正則式的屬性,你可以使用RegExp.lastParen 表達同樣的意思。 
leftContext 最近一次匹配前面的子串,$`具有相同的意思。 


RegExp的屬性,靜態(tài),只讀 
在Javascript 1.2, NES 3.0以上版本提供  
描述:因為leftContext是靜態(tài)的,不是某一個正則表達式的屬性,所以可以使用RegExp.leftContext來表達想同的意思。 
multiline 反映是否匹配多行文本,$*是相同的意思。 


RegExp的屬性,靜態(tài) 
在Javascript 1.2, NES 3.0以上版本提供  
描述:因為multiline是靜態(tài)的,而不是某個個別正則表達式的屬性,所以能夠用RegExp.multiline表達相同的意思。 
如果允許匹配多行文本,則multiline為true,如果搜索必須在換行時停止,則為false。 
腳本或瀏覽器能夠設置multiline屬性。當一個textarea的事件處理句柄被調(diào)用的時候,multiline 
被置為true。在事件處理句柄處理完畢后,multiline屬性值被清除。也就是說,如果你設置了multili 
ne為true,則執(zhí)行任何的事件處理句柄后,multiline被置為false。 


prototype  
描繪類的原型。你可以根據(jù)要求使用prototype來增加類的屬性或方法。為了獲得prototypes 的資 
料,請參閱RegExp的function.prototype.Property屬性。 從Javascript 1.1, NES 2.0版本開始提供 
ECMA版本ECMA-262 rightContext 最后一次匹配的右邊的字符串,$'是同樣的效果。 
RegExp的屬性,靜態(tài),只讀 從 Javascript 1.2, NES 3.0以上版本開始提供  
描述:因為rightContext是靜態(tài)的,不是某個個別正則表達工的屬性,可以使用RegExp.rightContext來達到相同的效果。 
source 一個只讀屬性,包含正則表達式定義的模式,不包僑forward slashes和"g"或"i"標記。 


RegExp的屬性,只讀 
從Javascript 1.2, NES 3.0以上版本開始提供  
描述:source是個別正則表達式對象的屬性,你不能直接改變它的值,但可以通過調(diào)用compile 方法來改變它。 test 
執(zhí)行指定字符串的正則表達式匹配搜索,返回true或false。 RegExp的方法 
從Javascript 1.2, NES 3.0以上版本開始提供 語法:regexp.test([str]) 
參數(shù):regexp,正則表達式的名稱,可以是變量名或正則表達式定義文字串 
str,要匹配的字符串,如果省略,將使用RegExp.input的值為作參數(shù) 
描述:當你需要知道一個字符串能否匹配某個正則表達工,可以使用test方法(與String.search方 
法類似); 為了獲得更多的信息(但速度將變慢),可以使用exec方法(與String.match方法類似)。 
例子:下面的例子顯示test是否成功的提示: 
function testinput(re, str){ 
if (re.test(str)) midstring = " contains "; 
else midstring = " does not contain "; 
document.write (str + midstring + re.source); } toSource  
返回一個字符串象征對象的源碼 RegExp的方法 從Javascript 1.3以上版本開始提供 語法:toSource() 
參數(shù):沒有 描述:toSource方法返回下述的值: 對于內(nèi)置的RegExp對象,toSource返回下面的字符象征源碼不可用: 
function Boolean(){ [native code] } 
在RegExp場合中, toSource返回象征源碼的字符串,通常這個方法是由Javascript內(nèi)部自動調(diào)用而不是不代碼中顯式調(diào)用。 
更多請看Object.toSource toString 返回描繪指定對象的字符串。 


RegExp的方法 
從Javascript 1.1, NES 2.0開始提供 ECMA版本ECMA-262 語法:toString() 參數(shù):無 
描述:RegExp對象不考慮Object對象的toString方法;它不繼承Object.toString,對于RegExp 對 
象,toString方法返回一個代表該對象的字符串。 例如:下面的例子顯示象征RegExp對象的字符串 
myExp = new RegExp("a+b+c"); alert(myExp.toString()) 
displays "/a+b+c/" 更多請看:Object.toString valueOf 返回一個RegExp對象的原始值 

RegExp的方法 從Javascript 1.1版本開始提供 ECMA版本:ECMA-262 語法:valueOf() 
參數(shù):無 描述:RegExp的valueOf方法以字符串形式返回RegExp對象的原始值,這個值與RegExp.toString相等。 
該方法通常由Javascript內(nèi)部自動調(diào)用而不是顯式調(diào)用 例子: myExp = new RegExp("a+b+c"); 
alert(myExp.valueOf()) displays "/a+b+c/" 
源:u/meil/archives/2007/325.html

標簽:蚌埠 棗莊 廣元 江蘇 衡水 萍鄉(xiāng) 大理 衢州

巨人網(wǎng)絡通訊聲明:本文標題《正則表達式詳述 四》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266