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

首頁 > 編程 > JavaScript > 正文

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

2019-11-21 00:40:33
字體:
來源:轉載
供稿:網友
一般情況下我們可能會用到正則表達式去替換文本:
復制代碼 代碼如下:

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

匹配字符串本身
所有子匹配(如果定義了)
匹配字符串在原始字符串中的位置
上一篇:javascript css styleFloat和cssFloat

下一篇:javascript 嵌套的函數(作用域鏈)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 富裕县| 乐安县| 保山市| 枞阳县| 黔南| 花垣县| 天气| 夹江县| 本溪市| 哈密市| 张家界市| 白朗县| 东乌珠穆沁旗| 西丰县| 华阴市| 洪江市| 英超| 舒兰市| 德庆县| 婺源县| 伊宁县| 车险| 本溪| 云林县| 博野县| 青龙| 南和县| 兰溪市| 滁州市| 屏南县| 鹰潭市| 鄂尔多斯市| 益阳市| 华宁县| 镇宁| 舞钢市| 黎平县| 樟树市| 成武县| 简阳市| 台东市|