簡體   English   中英

Javascript正則表達式替換方括號之間的最后一位數字?

[英]Javascript regex to replace last digit occurence between square brackets?

我已經尋找了好幾個小時,現在我以一種非常丑陋的方式結束了(但是在工作)。 我想找到一種可重用的好方法。

我有一個像這樣的字符串:

wanna[0].some[0].javascript

我想替換方括號之間的最后一位數字:

wanna[0].some[1].javascript

我以這種(丑陋的)方式結束了:

myString.replace(/\d].javascript$/, "1].javascript")

哪個應該是匹配它的最佳正則表達式?

myString.replace(/\d/, 1) // this should be for the first digit
myString.replace(/\d/g, 1) // this for every digit

我已經讀過關於負面的預見性,但是如果JS支持這一點,我還是聽不懂。

只需使用負數前瞻即可確定要匹配的括號后沒有其他括號:

var text = 'wanna[0].some[0].javascript';

text = text.replace(/\[\d](?!.*\[)/, '[1]');

這是小提琴: http : //jsfiddle.net/bRkEP/

不知道為什么需要提前。 您給出的答案(雖然很丑)應該可以。 正如克羅克福德(Crockford)在JavaScript中提到的負面回顧:好的部分 :“這不是很好的部分。”

如果您提供的線不起作用,我想那是因為您沒有逃脫方括號。 它應該是:

myString.replace(/\d\].javascript$/, "1].javascript");

您還可以進行一些捕捉以使其更容易被看到。

我同意對您的問題的評論,認為這似乎是一個奇怪的問題。 為什么要更改字符串中的數字? 最好在方括號中使用數字變量,然后再遞增即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM