js中的替換

2021-06-28 22:58:16 字數 1760 閱讀 1537

alert("2014-03-22".replace('-',''));

alert("2014-03-22".replace(/-/g,''));

第乙個執行的結果"201403-22"這個只是替換了第乙個"-"

第二個執行的結果"20140322" 這個能實現js的全部替換功能

其實第二個的意思就是用正規表示式實現全域性的替換 g 代表 gobal

以上**:

下面**:

function formatstr(str) 

要注意兩點:

要使用正規表示式,不能使用 str.replace("\r\n", newstring); ,這會導致只替換第乙個匹配的子字串。 

母字串中不一定 \r\n 會同時存在,也許只有 \n,沒有 \r 也是可能的。

replace方法的語法是:stringobj.replace(rgexp, replacetext) 其中stringobj是字串(string),reexp可以是正規表示式物件(regexp)也可以是字串(string),replacetext是替代查詢到的字串。。為了幫助大家更好的理解,下面舉個簡單例子說明一下 

js**

比我聰明的你,看完上面的例子之後,會發現第二個錯別字「終古」並沒有被替換成「中國」,我們可以執行二次replace方法把第二個錯別字「終古」也替換掉,程式經過改進之後如下: 

js**

我們可以仔細的想一下,如果有n的n次方個錯別字,是不是也要執行n的n次方replace方法來替換掉錯別字呢??呵,不用怕,有了正規表示式之後不用乙個錯別字要執行一次replace方法。。程式經過改進之後的**如下 

js**

上面講的是replace方法最簡單的應用,不知道大家有沒有看懂??下面開始講稍微複雜一點的應用。。    大家在一些**上搜尋文章的時候,會發現這麼乙個現象,就是搜尋的關鍵字會高亮改變顏色顯示出來??這是怎麼實現的呢??其實我們可以用正規表示式來實現,具體怎麼樣實現呢?簡單的原理請看下面的** 

js**

上面的程式缺少互動性,我們再改進一下程式,實現可以自主輸入要查詢的字元 

js**

可能大家都會對$1這個特殊字元表示什麼意思不是很理解,其實$1表示的就是左邊表示式中括號內的字元,即第乙個子匹配,同理可得$2表示第二個子匹配。。什麼是子匹配呢??通俗點講,就是左邊每乙個括號是第乙個字匹配,第二個括號是第二個子匹配。。    當我們要把查詢到的字元進行運算的時候,怎麼樣實現呢??在實現之前,我們先講一下怎麼樣獲取某乙個函式的引數。。在函式function的內部,有乙個arguments集合,這個集合儲存了當前函式的所有引數,通過arguments可以獲取到函式的所有引數,為了大家理解,請看下面的** 

js**

看懂上面的程式之後,我們再來看下面乙個有趣的程式 

js**

我們驚奇的發現,匿名函式竟然被執行了二次,並且在函式裡還帶有三個引數,為什麼會執行二次呢??這個很容易想到,因為我們寫的正規表示式是匹配單個數字的,而被檢測的字串剛好也有二個數字,故匿名函式被執行了二次。。在匿名函式內部的那三個引數到底是什麼內容呢??為了弄清這個問題,我們看下面的**。 

js**

經過觀察我們發現,第乙個引數表示匹配到的字元,第二個引數表示匹配時的字元最小索引位置(regexp.index),第三個引數表示被匹配的字串(regexp.input)。其實這些引數的個數,還會隨著子匹配的變多而變多的。弄清這些問題之後,我們可以用另外的一種寫法 

js**

看了上面的程式,原來可以對匹配到的字元為所欲為。下面簡單舉乙個應用的例子 

js**

JS中replace全部替換

今天遇到乙個問題,用replace只能替換乙個字元,不能替換字串中的全部字元,在網上找了很久也沒找到答案,有的說用 string.prototype.replaceall function findtext,reptext let regexp new regexp findtext,g retur...

js 替換json物件中的鍵名

情景描述 有個json陣列,現在需要將json物件中的key替換掉,值不變 將count改為value,goods改為name var data 方法一 通過map 實現 方法一 var data map function item 方法二 方法二 var jsonobject 取到data所對應的...

js中替換字串

摘自 function formatstr str 要注意兩點 要使用正規表示式,不能使用 str.replace r n newstring 這會導致只替換第乙個匹配的子字串。母字串中不一定 r n 會同時存在,也許只有 n,沒有 r 也是可能的。js 比我聰明的你,看完上面的例子之後,會發現第二...