国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

javascript 正則表達式觸發函數進行高級替換

2024-05-06 14:11:06
字體:
來源:轉載
供稿:網友
一般情況下我們可能會用到正則表達式去替換文本:
代碼如下:
var a = "abc123aXc";
a.replace(/a.c/g, 'ZZ');

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

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
我們看到,當正則表達式每產生一次匹配時,會觸發替換函數并將匹配字符串作為參數傳到替換函數中。當正則表達式中定義了子匹配(submatch)時,甚至可以做更高級的事情,替換函數可以根據不同的子匹配來作出相應的處理。比如我們要對網頁中的某些指定的實體代碼轉化為特殊字符:
[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://Vevb.com/">";
a.replace(/&([^&;]+);/g, deentityify);

執行結果為:

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

匹配字符串本身
所有子匹配(如果定義了)
匹配字符串在原始字符串中的位置
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 岳西县| 崇信县| 莱西市| 保靖县| 上思县| 溆浦县| 昌图县| 甘洛县| 三河市| 隆尧县| 尉氏县| 徐水县| 镇巴县| 开平市| 东方市| 鱼台县| 石狮市| 土默特右旗| 卫辉市| 哈尔滨市| 米泉市| 界首市| 额敏县| 襄汾县| 株洲市| 鄂托克旗| 绵竹市| 三穗县| 景东| 方山县| 如东县| 齐齐哈尔市| 镇江市| 剑河县| 靖安县| 大姚县| 北票市| 吴桥县| 乌海市| 怀仁县| 镇雄县|