JS replace()方法替換變量(可以對變量進行全文替換)


JS replace()方法替換變量(可以對變量進行全文替換)

將一段文本中的符合條件的所有字符串替換

最終代碼先呈上來

// string.replace(new RegExp(key,'g'),"b");
const regex = /\/media\/g/;

// let res = regex.test('/media/');

let sTr = "<p><img src=\"/media/goods/images/2_20170719161405_249.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161414_628.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161435_381.jpg\" title=\"\" alt=\"2.jpg\"/></p>";
let res = sTr.replace(new RegExp(regex, 'g'), 'http://127.0.0.1:8000/media/');
console.log(res);

//<p><img src="http://127.0.0.1:8000/media/oods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="http://127.0.0.1:8000/media/oods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="http://127.0.0.1:8000/media/oods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>

轉至:http://blog.sina.com.cn/s/blog_6552200b0102ve60.html

事情是這樣的:

我要用 JS 替換一個多行文本的關鍵字

正常,沒有變量的時候應該是這樣:

把 a 替換成 b:

string.replace("a","b");

以上只能替換第一個匹配的,要全文匹配應該用正則表達式:

string.replace(/a/g,"b");

正則加個參數 g ,表示全文匹配。

但現在,我要替換的不是 a 這個字符了,而是從外面傳進來的一個變量:

var key;

我可以這么寫:

string.replace(key,"b");

這只能替換第一個匹配的,要全文匹配就遇到難題了:

string.replace(/key/g,"b");

這樣寫是不行的,變量 key 傳不到正則里面去。。。頭疼啊

於是我在網上找啊找。

我先找 replace 替換變量,有說用加號拼接正則的,好像也失敗了。。。看得我暈暈乎乎的。

我無意中發現 java 有個 replaceAll() 方法,我想如果可以這樣不就好了嗎:

string.replaceAll(key,"b");

這樣就不用正則了,變量就能進去了。

然后發現 JS 里沒有 replaceAll() 這個方法。。

我靠,,然后我又查 JS 怎么能夠實現 replaceAll 這個方法,網上各種自己寫函數啊,,看得我也暈暈乎乎的。

后來我的思路又回到了怎樣把變量傳到 replace() 方法里面去。

哎~功夫不負有心人,看到一篇文章:

http://www.jb51.net/article/40269.htm

文章的最后,給出了 JS 里面正則表達式的另一個使用方法,那就是:

string.replace(new RegExp(key,'g'),"b");

這里,利用 JS 的 RegExp 對象,將 g 參數單拿了出來,同時,正則的內容可以用變量來代替了!!!!

干的漂亮!!!!

又簡單,又實用!

這里就完成了用 replace() 方法對變量進行全文替換。運氣不錯

怎么樣,是不是不用自己寫 replaceAll() 了呢!哈哈


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM