2011-07-19 63 views
2

如何使用JavaScript的正則表達式做一個不區分大小寫,全局搜索,並與下面的模式上的字符串替換:的Javascript正則表達式搜索和替換

[media id="5"][Media id=5]

,並完全替換爲:

http://someurl/?somevar=THE_ID_FROM_THE_PATTERN 

所以基本上是這樣的:

var mystring = '<img src="[media id=5]" />'; 

應轉換爲:

var newstring = '<img src="http://someurl/?somevar=5" />'; 
+0

是整個字符串HTML內容? –

回答

10

您需要捕獲的數量,使用括號,並在更換時用$ 1重新添加。此外,根據您的示例,它應該不區分大小寫(// i),並且引號是可選的。

var mystring = '<img src="[media id=5]" />'; 
var re = /\[media id="?(\d+)"?\]/gi; 
mystring.replace(re, "http://someurl/?somevar=$1"); 
+0

是的,我遇到的最大問題是可選問號。謝謝一堆! – VinnyD

+0

如果字符串中有多個[media id = X]標記,那麼該怎麼辦?我只需要添加「g」到以下語句:var re =/\ [media id =「?(\ d +)」?\]/ig; – VinnyD

+0

是的,但1美元是第一場比賽,所以你必須以某種方式調整替換字符串。 – gpojd

1

var regexp=/\[media id="5"\]/gi;

1

您可以使用:

var mystring = '<img src="[media id=5]" />'; 
mystring.replace(/\[media id=5\]/gi, 'http://someurl/?somevar=5').toString(); 

AND/OR

var mystring = '<img src="[media id=\"5\"]" />'; 
mystring.replace(/\[media id=\"5\"\]/gi, 'http://someurl/?somevar=5').toString(); 
1

正確的方法,我想,會是這樣的:

var regexp = /\[[mM]edia\ id\=\"\d+\"\]/g; 
var mystring = '<img src="[media id=5]" />'; 
var newstring = mystring.replace(regexp, "http://someurl/?somevar=$1"); 
+0

這對[媒體ID = 5]不起作用。 – gpojd

+0

我想我錯過了什麼 - 爲什麼不呢? –

+0

@AleksG,因爲'regexp'中的引號字符不是可選的。給他們一個問號,允許0或1次出現。 – MattBianco

相關問題