JScript中正則表達函式的說明與應用 (轉)

worldblog發表於2008-01-22
JScript中正則表達函式的說明與應用 (轉)[@more@]

作為匹配下文字替換、搜尋、提取的強有力工具,正則(Regular Expression)的應用已經從平臺逐漸滲入到開發中了,作為端/客戶端的指令碼開發語言,正越來越多將正規表示式應用融入其中,以彌補自身在文字上處理能力的不足。在此,我們以JScript5.5版本為例,對其中的正規表示式的應用作一個概述。
首先我們需要區分JScript中關於正規表示式的兩個:Regular Expression物件和RegExp物件。
前者僅包含一個特定的正規表示式例項的資訊,而後者透過一個全域性變數的屬性來反映最近模式匹配的特性。
前者在匹配前需要指定匹配模式,即建立一個Regular Expression物件的例項,而後可以把它傳遞給一個字串方法,或是把一個字串作為引數傳遞給這個Regular Expression例項的方法;而後者無需建立,它是一個固有的全域性物件,每次成功匹配操作結果資訊被儲存在這個物件的屬性中。

一、RegExp物件的屬性:反應最近一次成功匹配的結果資訊

input :儲存匹配的字串(被搜尋的目標字串)(>=IE4)
index :儲存匹配的首字元的位置*>=IE4)
lastIndex :儲存匹配的字串的下一個字元的位置(>=IE4)
lastMatch($&) :儲存匹配到的字串(>=.5)
lastParen($+) :儲存匹配結果最後一個子匹配的內容(最後一個括號的匹配內容)(>=IE5.5)
leftContext($`) :儲存目標字串中匹配子字串前的所有字元 (>=IE5.5)
rightContext($'):儲存目標字串中匹配子字串後的所有字元 (>=IE5.5)
$1 - $9 :儲存匹配中最開始的9個子匹配(即最開始的9個括號內的匹配結果)(>=IE4)

二、Regular Expression物件簡介
1.Regular Expression物件定義
在指令碼中使用正規表示式模式匹配,首先腰設定匹配模式,方法有如下兩種
(1)rgExp=/pattern*/[flags*]
(2)rgExp=new RegExp("pattern",["flags"])
注意:
a.後者模式中的跳脫字元“”需要用“”表示,用以抵消JS中跳脫字元""的意義,否則JS首先作為自己的轉義概念來解釋""後的字元。
b.flags標識有以下幾個(至JScript 5.5版本)
  g:設定當前匹配為全域性模式
  i:忽略匹配中的大小寫檢測
  m:多行搜尋模式
2.Regular Expression物件屬性
(1)rgExp.lastIndex:匹配結果後面一個字元的位置,同RegExp.lastIndex
(2)rgExp.:reExp物件的正規表示式匹配模式
3.Regular Expression物件方法
(1)rgExp.compile(pattern,[flags])
將rgExp轉化為內部格式,以加快匹配的執行,這對於大量模式一致的匹配更有效
(2)rgExp.exec(str)
按照rgExp的匹配模式對str字串進行匹配查詢,當rgExp物件中設定了全域性搜尋模式(g),則匹配查詢從RegExp物件lastIndex屬性所指定的目標字串位置開始;若沒有設定全域性搜尋,則從目標字串第一個字元開始搜尋。若沒有任何匹配發生,返回null。
需要注意的是該方法將匹配結果放在一個陣列內返回,該陣列有三個屬性
input:包含目標字串,同RegExp.index
index:匹配到的子字串在目標字串中的位置,同RegExp.index
lastIndex:匹配到的子字串後面一個字元的位置,同RegExp.lastIndex
(3)rgExp.test(str)
返回布林值來反映被查詢的目標字串str中是否存在符合匹配的模式。該方法不改變RegExp的屬性
4.與正規表示式相關的方法
主要是指字串物件中應用模式匹配的方法
(1)stringObj.match(rgExp)
根據rgExp物件的正規表示式模式查詢字串stringObj中的匹配字元項,將結果以陣列形式返回。該陣列有三個屬性值,與exec方法返回的陣列屬性相同。若沒有任何匹配,返回null。
需要注意的是,若rgExp物件未設定全域性匹配模式,則陣列0下標元素為匹配的整體內容,1~9包含了子匹配得到的字元。若設定了全域性模式,則陣列包含了搜尋到的所有整體匹配項。
(2)stringObj.replace(rgExp, replaceText)
返回一個字串,即將stringObj中符合rgExp模式匹配的字串替換成replaceText後返回。需要注意的是stringObj本身並不因為替換操作而改變。若期望stringObj中所有符合正規表示式模式的字串被替換,則在建立正規表示式模式時要設定為全域性模式。
(3)stringObj.search(rgExp)
返回第一個匹配到的子字串的位置

符號名詞解釋:
位置:表示子字串與目標字串首字元的偏移
reExp:表示一個Regular Expression物件例項
stringObj:表示一個字串物件
pattern:正規表示式模式
flags:匹配操作的模式標識

在實際開發中我們可以有針對性的使用正規表示式來達到我們字串處理的要求
如下附上四個使用正規表示式的JScript例程,這些例子主要用來熟悉正規表示式的使用。

1.e地址有效性檢測

2.字串替換操作

3.模式查詢字串

3.正規表示式屬性例程


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998140/,如需轉載,請註明出處,否則將追究法律責任。

相關文章