2016-12-02 22 views
0

我想改變這一切後「= IMG」成別的東西,下面的代碼無法正常工作:如何在JavaScript中匹配部分之後替換子字符串?

var j = '/test/123=img?xyze' 
j.replace(/=img\.*/, ''); 

任何想法如何?謝謝,

AC

+0

那還會是別的嗎? – HelpingHand

+0

將第一部分分組爲這樣:'(part1)part2'並用'$ 1thing'重新劃分空間 –

+0

String.prototype.replace(您正在使用的)不會修改字符串。它會返回應用替換的副本。 –

回答

2
var j = '/test/123=img?xyze' 
j=j.replace(/(=img)(.*)/, '$1_somethingElse'); 
console.log(j); // "/test/123=img_somethingElse" 

$1=img,其餘的將在$2,如果你需要它。

延伸閱讀:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Switching_words_in_a_string

+0

使用'match'不會更容易嗎? – HelpingHand

+0

如果你只是替換一個字符串的末尾,就像這裏匹配工程一樣,但'replace'更強壯,因爲如果需要的話,它可以讓你從字符串中間進行替換。如果進行字符串替換,'替換'似乎是自然選擇。比賽的作品,但我不會說這很容易。 – chiliNUT

+0

我很確定匹配替換字符串中。我從來沒有見過用這種方式替換...每天學習新的東西! – HelpingHand

1

改成這樣:

var j = '/test/123=img?xyze'; 
var replacementText = 'something-else'; 
j = j.match(/^.+?=img/i)[0] + replacementText; 

否則,低於這個小片段會給你查詢的周圍,你想改變什麼,所有的零件,如果你願意的話:

var j = '/test/123=img?xyze'; 
var replacementText = 'something-else'; 
var parts = j.match(/^(.+?)(=img)(.+)$/i); 

// /test/123=img?xyze : parts[0] 
// /test/123   : parts[1] 
// =img    : parts[2] 
// ?xyze    : parts[3] 

你會然後替換做到這一點:

j = parts[1] + parts[2] + replacementText; 
+0

他想用別的東西替換'= img'後面的東西。 – 2016-12-02 02:39:40

+0

糟糕...只是看到了......謝謝。 – HelpingHand

0

var j = '/test/123=img?xyze' 
 
var x = j.substr(0, j.indexOf('=img')) + '=img' 
 
console.log(x)