2011-09-08 154 views
0

在JavaScript中,我將如何使用正則表達式替換一切到「源=」正確JavaScript的正則表達式替換子

假設,例如:

var inStr="http://acme.com/mainpage.aspx?ID=25&Source=http://acme.com/fruitPage.aspx" 
var newSoruceValue="http://acme.com/vegiePage.aspx" 

目標是在outStr中獲得此值:

var outStr="http://acme.com/mainpage.aspx?ID=25&Source=http://acme.com/vegiePage.aspx" 

謝謝!

回答

2

假設條件是源=總是會在端

var inStr="http://acme.com/mainpage.aspx?ID=25&Source=http://acme.com/fruitPage.aspx" 
var newSourceValue="http://acme.com/vegiePage.aspx" 
var outStr = inStr.replace(/(Source=).*/, "$1" + newSourceValue); 
+0

謝謝你,完美的作品,如果你有時間,我會很感激你能否簡要地解釋它是如何工作的。感謝您的解決方案。 – user815460

+0

基本正則表達式。 '()'是一個捕獲組,因此它記得它匹配的內容。由於它是第一個捕獲組,因此它以'$ 1'讀取。 '.'表示任何字符和'*'表示匹配一次或多次。 – epascarello

+0

明白了,再次感謝。 – user815460

0

與string.replace(/圖案/,REPLACE_TEXT);

var outStr = inStr.replace(/&Source=.*$/, "&Source=" + newSoruceValue); 

var outStr = inStr.replace(/(&Source=).*$/, "$1" + newSoruceValue) 
+1

爲什麼圍繞你扔掉部分的捕獲組? – epascarello

+0

哦,當然。在不需要'&Source ='後捕獲正確的文本組 – ntvf

0

是 「源」 總是聯繫到 「&」 第一occurrance? 你可以使用

indexOf("&") + 7 

(字母數字 「源」 +一個 「=」)。

然後通過使用之前的索引將新源附加到子字符串來創建新字符串。