站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

JScript中正則表達(dá)函數(shù)的說(shuō)明與應(yīng)用

作為模式匹配下文本替換、搜索、提取的強(qiáng)有力工具,正則表達(dá)式(Regular Expression)的應(yīng)用已經(jīng)從unix平臺(tái)逐漸滲入到網(wǎng)絡(luò)開(kāi)發(fā)中了,作為服務(wù)器端/客戶(hù)端的腳本開(kāi)發(fā)語(yǔ)言JScript,正越來(lái)越多將正則表達(dá)式應(yīng)用融入其中,以彌補(bǔ)自身在文本上處理能力的不足。在此,我們以JScript5.5版本為例,對(duì)其中的正則表達(dá)式的應(yīng)用作一個(gè)概述。 
首先我們需要區(qū)分JScript中關(guān)于正則表達(dá)式的兩個(gè)對(duì)象:Regular Expression對(duì)象和RegExp對(duì)象。 
前者僅包含一個(gè)特定的正則表達(dá)式實(shí)例的信息,而后者通過(guò)一個(gè)全局變量的屬性來(lái)反映最近模式匹配的特性。 
前者在匹配前需要指定匹配模式,即創(chuàng)建一個(gè)Regular Expression對(duì)象的實(shí)例,而后可以把它傳遞給一個(gè)字符串方法,或是把一個(gè)字符串作為參數(shù)傳遞給這個(gè)Regular Expression實(shí)例的方法;而后者無(wú)需創(chuàng)建,它是一個(gè)固有的全局對(duì)象,每次成功匹配操作結(jié)果信息被保存在這個(gè)對(duì)象的屬性中。 

一、RegExp對(duì)象的屬性:反應(yīng)最近一次成功匹配的結(jié)果信息 

input :保存執(zhí)行匹配的字符串(被搜索的目標(biāo)字符串)(>=IE4) 
index :保存匹配的首字符的位置*>=IE4) 
lastIndex :保存匹配的字符串的下一個(gè)字符的位置(>=IE4) 
lastMatch($&) :保存匹配到的字符串(>=IE5.5) 
lastParen($+) :保存匹配結(jié)果最后一個(gè)子匹配的內(nèi)容(最后一個(gè)括號(hào)的匹配內(nèi)容)(>=IE5.5) 
leftContext($`) :保存目標(biāo)字符串中匹配子字符串前的所有字符 (>=IE5.5) 
rightContext($’):保存目標(biāo)字符串中匹配子字符串后的所有字符 (>=IE5.5) 
$1 – $9 :保存匹配中最開(kāi)始的9個(gè)子匹配(即最開(kāi)始的9個(gè)括號(hào)內(nèi)的匹配結(jié)果)(>=IE4) 

二、Regular Expression對(duì)象簡(jiǎn)介 
1.Regular Expression對(duì)象定義 
在腳本中使用正則表達(dá)式模式匹配,首先腰設(shè)定匹配模式,方法有如下兩種 
(1)rgExp=/pattern*/[flags*] 
(2)rgExp=new RegExp(“pattern”,[“flags”]) 
注意: 
a.后者模式中的轉(zhuǎn)義字符“”需要用“\”表示,用以抵消JS中轉(zhuǎn)義字符””的意義,否則JS首先作為自己的轉(zhuǎn)義概念來(lái)解釋””后的字符。 
b.flags標(biāo)識(shí)有以下幾個(gè)(至JScript 5.5版本) 
g:設(shè)定當(dāng)前匹配為全局模式 
i:忽略匹配中的大小寫(xiě)檢測(cè) 
m:多行搜索模式 
2.Regular Expression對(duì)象屬性 
(1)rgExp.lastIndex:匹配結(jié)果后面一個(gè)字符的位置,同RegExp.lastIndex 
(2)rgExp.source:reExp對(duì)象的正則表達(dá)式匹配模式 
3.Regular Expression對(duì)象方法 
(1)rgExp.compile(pattern,[flags]) 
將rgExp轉(zhuǎn)化為內(nèi)部格式,以加快匹配的執(zhí)行,這對(duì)于大量模式一致的匹配更有效 
(2)rgExp.exec(str) 
按照rgExp的匹配模式對(duì)str字符串進(jìn)行匹配查找,當(dāng)rgExp對(duì)象中設(shè)定了全局搜索模式(g),則匹配查找從RegExp對(duì)象lastIndex屬性所指定的目標(biāo)字符串位置開(kāi)始;若沒(méi)有設(shè)置全局搜索,則從目標(biāo)字符串第一個(gè)字符開(kāi)始搜索。若沒(méi)有任何匹配發(fā)生,返回null。 
需要注意的是該方法將匹配結(jié)果放在一個(gè)數(shù)組內(nèi)返回,該數(shù)組有三個(gè)屬性 
input:包含目標(biāo)字符串,同RegExp.index 
index:匹配到的子字符串在目標(biāo)字符串中的位置,同RegExp.index 
lastIndex:匹配到的子字符串后面一個(gè)字符的位置,同RegExp.lastIndex 
(3)rgExp.test(str) 
返回布爾值來(lái)反映被查找的目標(biāo)字符串str中是否存在符合匹配的模式。該方法不改變RegExp的屬性 
4.與正則表達(dá)式相關(guān)的方法 
主要是指字符串對(duì)象中應(yīng)用模式匹配的方法 
(1)stringObj.match(rgExp) 
根據(jù)rgExp對(duì)象的正則表達(dá)式模式查找字符串stringObj中的匹配字符項(xiàng),將結(jié)果以數(shù)組形式返回。該數(shù)組有三個(gè)屬性值,與exec方法返回的數(shù)組屬性相同。若沒(méi)有任何匹配,返回null。 
需要注意的是,若rgExp對(duì)象未設(shè)定全局匹配模式,則數(shù)組0下標(biāo)元素為匹配的整體內(nèi)容,1~9包含了子匹配得到的字符。若設(shè)定了全局模式,則數(shù)組包含了搜索到的所有整體匹配項(xiàng)。 
(2)stringObj.replace(rgExp, replaceText) 
返回一個(gè)字符串,即將stringObj中符合rgExp模式匹配的字符串替換成replaceText后返回。需要注意的是stringObj本身并不因?yàn)樘鎿Q操作而改變。若期望stringObj中所有符合正則表達(dá)式模式的字符串被替換,則在建立正則表達(dá)式模式時(shí)要設(shè)定為全局模式。 
(3)stringObj.search(rgExp) 
返回第一個(gè)匹配到的子字符串的位置 

符號(hào)名詞解釋?zhuān)?nbsp;
位置:表示子字符串與目標(biāo)字符串首字符的偏移 
reExp:表示一個(gè)Regular Expression對(duì)象實(shí)例 
stringObj:表示一個(gè)字符串對(duì)象 
pattern:正則表達(dá)式模式 
flags:匹配操作的模式標(biāo)識(shí) 

在實(shí)際web程序開(kāi)發(fā)中我們可以有針對(duì)性的使用正則表達(dá)式來(lái)達(dá)到我們字符串處理的要求 
如下附上四個(gè)使用正則表達(dá)式的JScript例程,這些例子主要用來(lái)熟悉正則表達(dá)式的使用。 

1.email地址有效性檢測(cè) 
<script language=’JScript’> 
function validateEmail(emailStr) 

var re=/^[w.-]+@([0-9a-z][w-]+.)+[a-z]{2,3}$/i; 
//或 var re=new RegExp(“^[\w.-]+@([0-9a-z][\w-]+\.)+[a-z]{2,3}$”,”i”); 
if(re.test(emailStr)) 

alert(“有效email地址!”); 
return true; 

else 

alert(“無(wú)效email地址!”); 
return false; 


</script> 

2.字符串替換操作 
<script language=’JScript’> 
var r, pattern, re; 
var s = “The rain in Spain falls mainly in the plain falls.”; 
pattern = /falls/ig; 
re = s.replace(re,’falling’); 
alert(‘s = ‘ + s + ‘n’ + ‘re = ‘ + re); 
</script> 

3.模式查找字符串 
<script language=’JScript’> 
var index, pattern; 
var str = “four for fall fell fallen fallsing fall falls waterfalls “; 
pattern = /bfallsb/i; 
index = str.search(pattern); 
alert(‘The position of match is at ‘ + index); 
</script> 

3.正則表達(dá)式屬性例程 
<script language=’JScript’> 
function matchAttrib() 

var s=”; 
var re = new RegExp(“d(b+)(d)”,”ig”); 
var str = “cdbBbdbsbdbdz”; 
while((arr = re.exec(str))!=null) 

s += “=======================================<br>”; 
s += “$1 returns: ” + RegExp.$1 + “<br>”; 
s += “$2 returns: ” + RegExp.$2 + “<br>”; 
s += “$3 returns: ” + RegExp.$3 + “<br>”; 
s += “input returns : ” + RegExp.input + “<br>”; 
s += “index returns : ” + RegExp.index + “<br>”; 
s += “lastIndex returns : ” + RegExp.lastIndex + “<br>”; 
s += “lastMatch returns: ” + RegExp.lastMatch + “<br>”; 
s += “leftContext returns: ” + RegExp.leftContext + “<br>”; 
s += “rightContext returns: ” + RegExp.rightContext + “<br>”; 
s += “lastParen returns: ” + RegExp.lastParen + “<br>”; 
s += “arr.index returns: ” + arr.index + “<br>”; 
s += “arr.lastIndex returns: ” + arr.lastIndex + “<br>”; 
s += “arr.input returns: ” + arr.input + “<br>”; 
s += “re.lastIndex returns: ” + re.lastIndex + “<br>”; 
s += “re.source returns: ” + re.source + “<br>”; 

return(s); //Return results. 

document.write(matchAttrib()); 
</script> 

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
精品一区二区三区AV天堂| 在线观看精品国产福利片100 | 国产三级精品三级男人的天堂| 精品国产一区二区三区香蕉事| 亚洲中文字幕久久精品无码A| 国内精品国语自产拍在线观看91| 国产成人综合日韩精品无码不卡| 国产精品亚洲精品日韩已满| 精品在线观看免费| 日韩A∨精品日韩在线观看| 国内精品久久久久久久97牛牛| 中文字幕精品视频| 欧洲精品一区二区三区在线观看| 国产精品视频一区二区三区无码| 国产看午夜精品理论片| 完整观看高清秒播国内外精品资源 | 国产av一区二区三区日韩| 精品一区二区久久久久久久网精| 麻豆成人精品国产免费| 一本久久a久久精品综合香蕉| 精品无码久久久久久午夜| 日韩毛片一区视频免费| 亚洲精品在线播放视频| 2022国产精品自在线拍国产| 国产91精品久久久久999| 99rv精品视频在线播放| 四虎永久在线精品免费一区二区| 久久99精品久久久久久综合 | 一级香蕉精品视频在线播放| 国产精品自在自线免费观看| 97久久国产综合精品女不卡| 亚洲精品伦理熟女国产一区二区 | 日韩精品无码一区二区三区免费| 99热在线精品播放| 无码人妻精品一区二| 国产精品嫩草视频永久网址| 香蕉依依精品视频在线播放 | 亚洲乱码一区二区三区国产精品| 91精品国产手机| 亚洲日韩AV无码一区二区三区人| 精品亚洲aⅴ在线观看|