a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > regex > 正文

正則表達式詳述 三

2020-01-20 22:25:41
字體:
來源:轉載
供稿:網友
當表達式被檢查的時候,文字符號提供了編輯正則表達式的方法。利用文字符號可以使到正則表達式保持為常數。例如,如果你在一個循環中使用文字符號來構造一個正則表達式,正則表達式不需進行反復編譯。正則表達式對象構造器,例如,new RegExp("ab+c"),提供正則表達式的運行時編譯。當你知道正則表達式的模式會變化的時候,應該使用構造函數,或者你不知道正則表達式的模式,而它們是從另外的源獲得的時候,比如由用戶輸入時。一旦你定義好了正則表達式,該正則表達式可在任何地方使用,并且可以改變,你可以使用編譯方法來編譯一個新的正則表達式以便重新使用。 
    一個分離預先定義的RegExp對象可以在每個窗口中使用;也就是說,每個分離的Javascript線程運行以獲得自己的RegExp對象。因為每個腳本在一個線程中是不可中斷的,這就確保了不同的腳本不會覆蓋RegExp對象的值。預定義的RegExp對象包含的靜態屬性:input, multiline, lastMatch,lastParen, leftContext,rightContext, 以及從$1到$9。input和multiline屬性能被預設。其它靜態屬性的值是在執行個別正則 
表達式對象的exec和test方法后,且在執行字符串的match和replace方法后設置的。 
屬性 
注意RegExp對象的幾個屬性既有長名字又有短名字(象Perl)。這些名字都是指向相同的值。Perl是一種編程語言,而Javascript模仿了它的正則表達式。 

屬性$1, ..., $9 
取得匹配的子串,如果有的話 

屬性$_ 
參考input 

屬性$* 
參考multiline 

屬性$& 
參考lastMatch 

屬性$+ 
參考lastParen 

屬性$` 
參考leftContext 

屬性$' 
參考rightContext 

屬性constructor 
指定用來建立對象原型函 

屬性global 
決定是否測試正則表達式是否不能匹配所有的字符串,或者只是與最先的沖突。 

屬性ignoreCase 
決定試圖匹配字符串的時候是否忽略大小寫 

屬性input 
當正則表達式被匹配的時候,為相反的字符串。 

屬性lastIndex 
決定下一次匹配從那里開始 

屬性lastMatch 
最后一個匹配的字符 

屬性lastParen 
子串匹配的時候,最后一個parenthesized,如果有的話。 

屬性leftContext 
最近一次匹配前的子串。 

屬性multiline 
是否在串的多行中搜索。 

屬性prototype 
允許附加屬性到所有的對象 

屬性rightContext 
最近一次匹配后的的子串。 

屬性source 
模式文本 

方法 
compile方法 
編譯一個正則表達式對象 

exec方法 
運行正則表達式匹配 

test方法 
測試正則達式匹配 

toSource方法 
返回一個對象的文字描述指定的對象;你可以使用這個值來建立一個新的對象。不考慮Object.toSource方法。 

toString方法 
返回一個字符串描述指定的對象,不考慮Object.toString對象。 

valueOf方法 
返回指定對角的原始值。不考慮Object.valueOf方法。


另外,這個對象繼承了對象的watch和unwatch方法 
  例子: 
  例1、下述示例腳本使用replace方法來轉換串中的單詞。在替換的文本中,腳本使用全局 RegExp對象的$1和$2屬性的值。注意,在作為第二個參數傳遞給replace方法的時候,RegExp對象的$屬性的名 
稱。 
<script LANGUAGE="Javascript1.2"> 
re = /(/w+)/s(/w+)/; 
str = "John Smith"; 
newstr=str.replace(re,"$2, $1"); 
document.write(newstr) 
</script> 
顯示結果:"Smith, John".  

  例2、下述示例腳本中,RegExp.input由Change事件處理句柄設置。在getInfo函數中,exec 方法使用RegExp.input的值作為它的參數,注意RegExp預置了$屬性。 


<script LANGUAGE="Javascript1.2"> 
function getInfo(abc) 

re = /(/w+)/s(/d+)/; 
re.exec(abc.value); 
window.alert(RegExp.$1 + ", your age is " + RegExp.$2); 

</script> 

  請輸入你的姓和年齡,輸入完后按回車鍵。 
  <FORM><INPUT TYPE="TEXT" NAME="NameAge" onChange="getInfo(this);"></FORM> 
  </HTML> 


$1, ..., $9屬性 
用圓括號括著的匹配子串,如果有的話。 
是RegExp的屬性 
靜態,只讀 

在Javascript 1.2, NES 3.0以上版本提供 
描述:因為input是靜態屬性,不是個別正則表達式對象的屬性。你可以使用RegExp.input 訪問該屬性。 

能加上圓括號的子串的數量不受限制,但正則表達式對象只能保留最后9 條。如果你要訪問所有的圓括號內的匹配字串,你可以使用返回的數組。 

這些屬性能用在RegExp.replace方法替換后的字符串(輸出結果)。當使用這種方式的時候,不用預先考慮RegExp對象。下面給出例子。當正則表達式中沒有包含圓括號的時候,該腳本解釋成$n的字面意 
義。(這里的n是一個正整數)。 


例如: 
下例腳本使用replace 方法來交換串中單詞的位置。在替換后的文本字串中,腳本使用正則表達式RegExp對象的$1和$2屬性的值。注意:當它們向replace方法傳遞參數的時候,這里沒有考慮 $ 屬性的 
RegExp對象的名稱。 
<script LANGUAGE="Javascript1.2"> 
re = /(/w+)/s(/w+)/; 
str = "John Smith"; 
newstr=str.replace(re,"$2, $1"); 
document.write(newstr) 
</script> 
顯示的輸出結果為:Smith, John。
u/meil/archives/2007/324.html
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天天干天天操天天舔 | 国产福利在线播放麻豆 | 国产精品欧美日韩 | a天堂在线观看 | 五月在线视频 | 色网站视频 | 日韩午夜精品视频 | av日韩一区 | 亚洲欧美激情精品一区二区 | 色噜| 日韩成人高清 | 久久99视频| www.黄色片视频 | 国产91精品一区二区绿帽 | 老司机午夜免费精品视频 | 日操 | 久久91久久久久麻豆精品 | 久久综合九色综合欧美狠狠 | 亚洲国产91 | 国产一区二区av | 精品久久久久久久久久 | av黄色在线播放 | 免费视频一二三区 | sis色中色| 欧洲毛片| 中文字幕在线观看第一页 | 久久久久91 | 国产精品久久久久影院色老大 | 91精品国产乱码久久久久久 | 免费观看日韩av | 欧美国产日韩在线观看 | 蜜桃精品久久久久久久免费影院 | 国产91一区 | 国产精品久久久一区二区 | 精品无码久久久久国产 | 中文字幕日韩一区 | 草b视频 | 国产精品无码专区在线观看 | 精品国产一区二区三区日日嗨 | 在线国产视频 | 欧美中文在线观看 |