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

javascript 正則表達式觸發(fā)函數(shù)進行高級替換

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

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

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

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

我們看到,當正則表達式每產(chǎn)生一次匹配時,會觸發(fā)替換函數(shù)并將匹配字符串作為參數(shù)傳到替換函數(shù)中。當正則表達式中定義了子匹配(submatch)時,甚至可以做更高級的事情,替換函數(shù)可以根據(jù)不同的子匹配來作出相應(yīng)的處理。比如我們要對網(wǎng)頁中的某些指定的實體代碼轉(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ī)則就會很清楚其原理了。事實上,如果在正則表達式中定義了子匹配,那么參數(shù)的長度會隨著子匹配的個數(shù)改變,如果沒有定義子匹配,那么長度是固定的。傳參的規(guī)則為:

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

相關(guān)文章

最新評論

陆河县| 长沙市| 桦南县| 博爱县| 赣州市| 虹口区| 日土县| 平原县| 盐池县| 五寨县| 南乐县| 府谷县| 邓州市| 平罗县| 额济纳旗| 朝阳县| 秭归县| 高青县| 中卫市| 芮城县| 丰宁| 鸡西市| 交城县| 迁安市| 石屏县| 吕梁市| 广汉市| 连云港市| 东光县| 富蕴县| 崇文区| 株洲市| 青岛市| 拉萨市| 宁强县| 叙永县| 平顶山市| 石景山区| 白玉县| 舞钢市| 金坛市|