JavaScript 裡有一個功能是 .replace() ,可以用來替換文字。

在練習的時候遇到一個小地雷,寫起來以後自己參考。

一開始的想法是先來個一小段:


var s = "(text)";
document.write(s.replace("(text)", "TEST"));

然後結果會是 TEST 沒有問題。

但是如果寫成


var s = "(texts) (texts)";
document.write(s.replace("(texts)", "TESTS"));

結果卻是 TESTS (texts) … XD

找了一下,原因是前面的參數可以是字串或 RegExp 。要取代多次,得用 RegExp …

所以重寫成


var s = "(texts) (texts)";
document.write(s.replace(/(texts)/ig, "TESTS"));

結果變成 (TESTS) (TESTS) …XDDD

檢查了一下發現是沒對 () 做 escape … XD 再改!


var s = "(texts) (texts)";
document.write(s.replace(/\(texts\)/ig, "TESTS"));

結果總算是自己要的 TESTS TESTS 了。


Tags: JavaScript jQuery .replace() 取代 regular expression RegExp


arrow
arrow
    文章標籤
    javascript
    全站熱搜
    創作者介紹
    創作者 repeat ❤️ 的頭像
    repeat ❤️

    旅行的記憶

    repeat ❤️ 發表在 痞客邦 留言(0) 人氣()