2011-07-02 65 views
0

我想刪除用方括號括起來的數字的字符串模式的任何發生,例如, [1],[25],[46],[345](我認爲括號內最多3個字符應該沒問題)。我想用空字符串替換它們,「」,即刪除它們。Javascript替換字符串模式使用RegExp?

我知道這可以用正則表達式來完成,但我對此很新。這裏就是我有沒有做任何事情:

var test = "this is a test sentence with a reference[12]"; 
removeCrap(test); 
alert(test); 

function removeCrap(string) { 

var pattern = new RegExp("[...]"); 
string.replace(pattern, ""); 

}

誰能幫我這個?希望問題清楚。謝謝。

回答

0

這將做到這一點:

test = test.replace(/\[\d+\]/g, ''); 
  • \[因爲[自身引入了一個字符範圍
  • \d+ - 任意數量的數字
  • \]如上
  • /g - 做每次出現

注意:因爲String.replace不會更改原始字符串,所以必須重新分配結果(無論是新變量還是回自己)。

+0

真棒,制定了出色的 – maxcollins

3
  1. []在正則表達式有特殊的含義,它會創建一個character class。如果你想字面上匹配這些字符,你必須逃避它們。

  2. replace[docs]只替換第一個出現字符串/表達式,除非設置了全局標誌/修飾符。

  3. replace返回新的字符串,它不會在原地更改字符串。

有考慮到這一點,這應該這樣做:

var test = "this is a test sentence with a reference[12]"; 
test = test.replace(/\[\d+\]/g, ''); 
alert(test); 

正則表達式解釋說:

在JavaScript中,/.../正則表達式字面g是全球的標誌。

  • \[比賽[字面上
  • \d+匹配一個或多個數字
  • \]比賽]字面上

要了解更多關於正則表達式,看看在MDN documentationhttp://www.regular-expressions.info/

+0

非常感謝很多人 – maxcollins

+0

@maxcollins:我的榮幸:)歡迎來到SO,不要忘記接受最有幫助的答案(點擊旁邊的勾號大綱)。 –