在javascript中,replace()函數可以利用正則表達式來不區分大小寫的替換字符串,語法“string.replace(/要查找的值/gi,"替換值")”;其中“g”代表全局替換,“i”代表忽略大小寫。
本教程操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
在javascript中,replace()函數可以不區分大小寫的替換字符串,這需要借助正則表達式。
replace() 方法用于在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子串。
語法:
string.replace(searchvalue,newvalue)
參數 | 描述 |
---|
searchvalue | 必須。規定子字符串或要替換的模式的 RegExp 對象。 請注意,如果該值是一個字符串,則將它作為要檢索的直接量文本模式,而不是首先被轉換為 RegExp 對象。 |
newvalue | 必需。一個字符串值。規定了替換文本或生成替換文本的函數。 |
返回值:一個新的字符串,是用 replacement 替換了 regexp 的第一次匹配或所有匹配之后得到的。
replace() 方法的第二個參數可以使用函數,當匹配時會調用該函數,函數的返回值將作為替換文本使用,同時函數可以接收以$為前綴的特殊字符,用來引用匹配文本的相關信息。
replace() 方法第二個參數中特殊字符約定字符串 | 說明 |
---|
$1、$2、...、$99 | 與正則表達式中的第 1~99 個子表達式相匹配的文本 |
$&(美元符號+連字符) | 與正則表達式相匹配的子字符串 |
$’(美元符號+切換技能鍵) | 位于匹配子字符串左側的文本 |
$'(美元符號+單引號) | 位于匹配字符串右側的文本 |
$$ | 表示 $ 字符串 |
示例1
將字符串中的字符 a(不區分大小寫) 替換為 x
<p>將字符串中的字符 a(不區分大小寫) 替換為 x</p>
<script>
var sText = "abcdefaABC";
//g 代表全局替換 i 代表 忽略大小寫
var txt = sText.replace( /a/gi , "x");
document.getElementById("demo").innerHTML = txt;
</script>
輸出結果:
示例2
下面代碼把字符串中每個單詞轉換為首字母大寫形式顯示。
var s = 'javascript is script , is not java.'; //定義字符串
//定義替換文本函數,參數為第一個子表達式匹配文本
var f = function ($1) {
//把匹配文本的首字母轉換為大寫
return $1.substring(0,1).toUpperCase() + $1.substring(1).toLowerCase();}
var a = s.replace(/(w+)/g, f); //匹配文本并進行替換
console.log(a); //返回字符串“JavaScript Is Script , Is Not Java.”
在上面示例中替換函數的參數為特殊字符“$1”,它表示正則表達式 /(w+)/ 中小括號匹配的文本,然后在函數結構內對這個匹配文本進行處理,截取其首字母并轉換為大寫形式,余下字符全為小寫,然后返回新處理的字符串。replace() 方法是在原文本中使用這個返回的新字符串替換掉每次匹配的子字符串。
示例3
對于上面的示例還可以進一步延伸,使用小括號來獲取更多匹配信息。例如,直接利用小括號傳遞單詞的首字母,然后進行大小寫轉換處理,處理結果都是一樣的。
var s = 'javascript is script , is not java.'; //定義字符串
var f = function ($1,$2,$3) { //定義替換文本函數,請注意參數的變化
return $2.toUpperCase() + $3;
}
var a = s.replace(/(w+)/g, f);
console.log(a);
在函數 f() 中,第一個參數表示每次匹配的文本,第二個參數表示第一個小括號的子表達式所匹配的文本,即單詞的首字母,第二個參數表示第二個小括號的子表達式所匹配的文本。
replace() 方法的第二個參數是一個函數,replace() 方法會給它傳遞多個實參,這些實參都包含一定的意思,具體說明如下:
第一個參數表示與匹配模式相匹配的文本,如上面示例中每次匹配的單詞字符串。
其后的參數是與匹配模式中子表達式相匹配的字符串,參數個數不限,根據子表達式數而定。
后面的參數是一個整數,表示匹配文本在字符串中的下標位置。
最后一個參數表示字符串自身。
示例4
把上面示例中替換文本函數改為如下形式。
var f = function() {
return arguments[1].toUpperCase() + arguments[2];
}
也就是說,如果不為函數傳遞形參,直接調用函數的 arguments 屬性同樣能夠讀取到正則表達式中相關匹配文本的信息。其中:
arguments[0]:表示每次匹配的文本,即單詞。
arguments[1]:表示第一個子表達式匹配的文本,即單詞的首個字母。
arguments[2]:表示第二個子表達式匹配的文本,即單詞的余下字母。
arguments[3]:表示匹配文本的下標位置,如第一個匹配單詞“javascript”的下標位置就是0,以此類推。
arguments[4]:表示要執行匹配的字符串,這里表示“javascript is script , is not java.”。
該文章在 2024/11/16 18:05:19 編輯過