最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript 正則表達(dá)式觸發(fā)函數(shù)進(jìn)行高級(jí)替換

 更新時(shí)間:2010年03月15日 11:33:10   作者:  
如果在正則表達(dá)式中定義了子匹配,那么參數(shù)的長度會(huì)隨著子匹配的個(gè)數(shù)改變,如果沒有定義子匹配,那么長度是固定的。
一般情況下我們可能會(huì)用到正則表達(dá)式去替換文本:
復(fù)制代碼 代碼如下:

var a = "abc123aXc";
a.replace(/a.c/g, 'ZZ');

我們可以用函數(shù)來定義高級(jí)替換,而不是一個(gè)簡單的字符串。比如:

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

我們看到,當(dāng)正則表達(dá)式每產(chǎn)生一次匹配時(shí),會(huì)觸發(fā)替換函數(shù)并將匹配字符串作為參數(shù)傳到替換函數(shù)中。當(dāng)正則表達(dá)式中定義了子匹配(submatch)時(shí),甚至可以做更高級(jí)的事情,替換函數(shù)可以根據(jù)不同的子匹配來作出相應(yīng)的處理。比如我們要對(duì)網(wǎng)頁中的某些指定的實(shí)體代碼轉(zhuǎn)化為特殊字符:
[code]
var entity = {
quot: '"',
lt: '<',
gt: '>'
};
function deentityify(a, b) {
var r = entity[b];
return typeof r === 'string' ? r : a;
}
var a = "<a href="http://jb51.net/">";
a.replace(/&([^&;]+);/g, deentityify);

執(zhí)行結(jié)果為:

<a >
如果我們知道了傳遞參數(shù)的規(guī)則就會(huì)很清楚其原理了。事實(shí)上,如果在正則表達(dá)式中定義了子匹配,那么參數(shù)的長度會(huì)隨著子匹配的個(gè)數(shù)改變,如果沒有定義子匹配,那么長度是固定的。傳參的規(guī)則為:

匹配字符串本身
所有子匹配(如果定義了)
匹配字符串在原始字符串中的位置

相關(guān)文章

最新評(píng)論

武陟县| 尼勒克县| 沿河| 如皋市| 武穴市| 井冈山市| 承德市| 澜沧| 清镇市| 宁都县| 东丰县| 澄迈县| 马龙县| 永德县| 浠水县| 乌拉特后旗| 朝阳区| 乡宁县| 郴州市| 广灵县| 枣阳市| 玉门市| 湘阴县| 青海省| 新兴县| 沧源| 佛学| 罗源县| 西充县| 湄潭县| 黑山县| 进贤县| 剑川县| 德阳市| 武胜县| 神农架林区| 博爱县| 南雄市| 界首市| 依安县| 喀喇沁旗|