2011-12-08 78 views

回答

5

這將這樣的伎倆:

"sermon[thesis][1][name][2]".replace(/\[(\d+)\]/g, function(match, number) { 
    return "[" + (Number(number) + 1) + "]"; 
}); 

工作演示:jsFiddle

編輯:

遞增最後一個號碼,你會最後/前添加一個美元符號$,這裏有一個演示:jsFiddle

+0

用回調代替,這很酷! – Dziamid

+0

或'+號碼'而不是'號碼(號碼)'。 –

+0

+1比我快。 –

2

您可以使用replace,它實際上可以採用一個函數作爲替換「字符串」。

var str = 'sermon[thesis][1][name][2]'; 
str = str.replace(/(\d+)/g, function(a){ 
    return parseInt(a,10) + 1; 
}); 
console.log(str); //'sermon[thesis][2][name][3]' 
1

可以使用replace()函數與正則表達式匹配任何號碼,然後返回加1該值來替代它:

var string = '[1][2]'; 
string.replace(/[0-9]+/g,function(e){return parseInt(e,10)+1})); //Returns [2][3] 

Working Example

+0

'parseInt(e)'應該是'parseInt(e,10)'。 –

+0

@Rocket,我相信它可以省略並使用默認值。此外,它有助於在這種情況下的可讀性。 –

+0

我可以省略,但不應該。默認值並不總是你想要的。 'parseInt('13')'給你'13',就像你期望的一樣,但'parseInt('013')'給你'11'。 '013'以'0'開始,所以它被認爲是八進制(8位)。 'parseInt('013',10)'另一方面返回'13'。 –

1

你可以做像這樣:

var str = "sermon[thesis][1][name][2]"; 
var newStr = str.replace(new RegExp("\\d+", "g"), function (n) { 
    return parseInt(a, 10) + 1; 
}); 

基本上,該函數將在文本被表達式\d+捕獲時調用,函數的文本返回將用於替換捕獲的文本。

相關問題