DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> javascript 正則表達式觸發函數進行高級替換
javascript 正則表達式觸發函數進行高級替換
編輯:關於JavaScript     
一般情況下我們可能會用到正則表達式去替換文本:
復制代碼 代碼如下:
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://jb51.net/">";
a.replace(/&([^&;]+);/g, deentityify);

執行結果為:

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

匹配字符串本身
所有子匹配(如果定義了)
匹配字符串在原始字符串中的位置
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved