亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

javascript 正則表達(dá)式相關(guān)應(yīng)介紹

 更新時(shí)間:2012年11月27日 10:20:18   作者:  
javascript 中幾個(gè)與正則表達(dá)式相關(guān)的應(yīng)用,本文將詳細(xì)介紹,需要的朋友可以參考下
string 對(duì)象
1、str.match(RegExp)
在str中搜索匹配RegExp的字符串并保存在一個(gè)數(shù)組內(nèi)返回,
如果RegExp不是全局設(shè)置(/g),僅匹配一次
復(fù)制代碼 代碼如下:

("abc112dwfwabcwef2abc3wfwabcasqf453abcqwf24j234h").match(/abc\d*/g);
//結(jié)果
["abc112", "abc", "abc3", "abc", "abc"]

該方法中,如果正則表達(dá)式不是全局匹配模式(g標(biāo)記),第一個(gè)元素將是匹配的字符串,其余是正則中捕獲的字符串,并且該數(shù)組具備2個(gè)屬性:
input 用于檢測(cè)的字符串
index 匹配的字符串在用于檢測(cè)字符串中的開(kāi)始位置。
(關(guān)于這2個(gè)屬性可以參考 RegExp.exec() 方法)
2、str.search(regExp)
返回符合匹配RegExp的第一個(gè)字符串的位置,如果沒(méi)有匹配返回-1,全局標(biāo)記沒(méi)有意義,因?yàn)橹黄ヅ湟淮危?
該方法也忽略 regExp 的 lastIndex 屬性,并且總是從字符串的開(kāi)始進(jìn)行檢索。
3、str.replace(RegExp,replaceText)
將匹配RegExp 的字符串替換為replaceText,如果 RegExp 沒(méi)有全局設(shè)置,只匹配一次,使用全局模式將替換所有匹配的字符串。
如果RegExp 中使用了捕獲分組匹配,則replaceText中的$具有特殊含義
$1、$2、...、$99 //與 RegExp 中的第 1 到第 99 個(gè)子表達(dá)式相匹配的文本。
$& // 與 regexp 相匹配的子串。
$` // 位于匹配子串左側(cè)的文本。
$' // 位于匹配子串右側(cè)的文本。
$$ // 匹配$符號(hào)自身。
注意,你需要考慮RegExp中捕獲分組的數(shù)量,如果你只設(shè)置了2個(gè)捕獲,那$3將不再具有特殊含義
("123ab12c11d_4532").replace(/a(b\d*)c(\d*)d/,"$1@$2-")
//將得到:
"123b12@11-_4532"
4、str.replace(RegExp,function)
str.replace 的第二個(gè)參數(shù)可以是函數(shù),函數(shù)的返回值將作為匹配字符的替換內(nèi)容,
注意,如果要全局匹配RegExp仍然需要全局g標(biāo)記。
函數(shù)的參數(shù)依次是:
匹配的字符串,
配置的捕獲子串(多個(gè)),
匹配字符串的開(kāi)始位置,
用于匹配的原字符串
注意,請(qǐng)根據(jù)RegExp中捕獲分組的設(shè)置數(shù)量來(lái)定義函數(shù)參數(shù)個(gè)數(shù),如果參數(shù)太少將可能導(dǎo)致“匹配字符串的開(kāi)始位置” 和 “用于匹配的原字符串” 不能在參數(shù)中出現(xiàn),當(dāng)然也可以在函數(shù)內(nèi)使用arguments對(duì)象解決這個(gè)問(wèn)題,arguments(arguments.length-2) 就是匹配字符串的開(kāi)始位置,arguments(arguments.length-1) 就是 用于匹配的原字符串。
復(fù)制代碼 代碼如下:

var newStr = ("123ab12c11d_4532").replace(/a(b\d*)c(\d*)d/g,function(s,s1,s2,pos,oldStr){
return "@"+s1+"@"+s2+"@";
}) ;
//將得到
"123@b12@11@_4532"

5、str.split(RegExp[,limit])
將字符串str用符合匹配的字符串分割成數(shù)組,limit 可選,用于限定返回的數(shù)組長(zhǎng)度
("ada2afa4fcas6afa").split(/\d/,3) // "ada,afa,fcas"
6、RegExp.exec("str") 方法
在str中查找匹配的字符串,注意,每次運(yùn)行該方法只匹配一次,要匹配多個(gè)需要將RegExp設(shè)置為/g,并多次運(yùn)行exec()方法,每次匹配返回值 result = RegExp.exec("str")
result為一個(gè)數(shù)組,這個(gè)數(shù)組長(zhǎng)度為1,數(shù)組元素為找到的匹配的子串,
另外,這個(gè)數(shù)組被額外賦給了2 個(gè)屬性:
result.index 表示匹配的子串在原字符串的開(kāi)始位置
result.input 就是原字符串
當(dāng)再也無(wú)法找到符合匹配的子串時(shí),返回 result = null,并設(shè)置 RegExp.lastIndex=0
RegExp.lastIndex 是正則表達(dá)式的屬性,表示當(dāng)前將從字符串的哪個(gè)位置開(kāi)始匹配,初始值為0。
如果RegExp被設(shè)置為全局的,在匹配一個(gè)字符串一次之后,使用同一個(gè)RegExp對(duì)一個(gè)新的字符串進(jìn)行匹配請(qǐng)先手動(dòng)設(shè)置 RegExp.lastIndex=0
如果RegExp 不是全局匹配模式,在程序中又寫(xiě)了一個(gè)循環(huán),根基返回值 result來(lái)決定是否終止匹配,從而試圖匹配完這個(gè)字符串,那么,只要有符合匹配條件的子串,就必定造成死循環(huán),因?yàn)榉侨制ヅ渲粚?duì)字符串匹配一次,結(jié)果每次運(yùn)行匹配操作都是匹配第一個(gè)子串,返回的 result 不為空,這是個(gè)比較容易犯的錯(cuò)誤。
復(fù)制代碼 代碼如下:

var str = "1Visit W3School, W3School is a place to study web technology.";
var patt = new RegExp("W3School","g");
var result;
document.write(patt.lastIndex+"<br />");
document.write("=====================================<br />");
while ((result = patt.exec(str)) != null) {
document.write(patt.lastIndex+"<br />");
document.write(result.constructor.name+"<br />");
document.write(result.length+"<br />");
document.write(result[0]+"<br />");
document.write(result.index+"<br />");
document.write(result.input+"<br />");
document.write("=====================================<br />");
}
document.write(patt.lastIndex+"<br />");
// 運(yùn)行結(jié)果:
=====================================
Array
W3School
Visit W3School, W3School is a place to study web technology.
=====================================
Array
W3School
Visit W3School, W3School is a place to study web technology.
=====================================

7、RegExp.test("str") 方法
該方法與 RegExp.exec 類似,不同的是僅返回true或false
RegExp.lastIndex 的含義是一樣的(這是RegExp的屬性,跟是使用test方法還是exec方法無(wú)關(guān))
如果同一個(gè)RegExp 先后使用了test方法和exec方法,你可能需要手動(dòng)設(shè)置 RegExp.lastIndex=0,這些方法是共享同一個(gè)RegExp對(duì)象的lastIndex 屬性的
復(fù)制代碼 代碼如下:

var str = "1Visit W3School, W3School is a place to study web technology.";
var patt = new RegExp("W3School","g");
var result ;
result = patt.test(str);
alert(result); //true
result = patt.test(str);
alert(result); //true
result = patt.test(str);
alert(result); //false

IE9+ 、較新版本的 chrome、firefox 中 , str.match(reg) 執(zhí)行完畢后,無(wú)論是否全局匹配,是否存在匹配結(jié)果 ,lastindex 被重置,reg.lastIndex = 0 , reg.test(str) 執(zhí)行后,如果正則是非全局匹配的,lastindex 被重置, re.lastIndex = 0 在 IE8 及以下,正則匹配執(zhí)行后除非沒(méi)有匹配結(jié)果,否則 re.lastIndex 是最后一個(gè)匹配字符串的結(jié)尾字符的位置 +1,即lastIndex 沒(méi)有被重置

相關(guān)文章

最新評(píng)論